2013-03-26 85 views
0

我想要一个非常可靠的方式从电子邮件标题中检索数据。我是否应该使用电子邮件解析器,例如https://github.com/plancake/official-library-php-email-parser或者php imap函数是否足以获取该数据?什么是最佳做法?有什么经验吗?我可以想象,由许多电子邮件客户端组成的格式化电子邮件标题有很多不同之处。这就是为什么我需要可靠的解决方案。电子邮件解析器或php的imap功能?

回答

1

我使用内置的IMAP函数来处理需要按日期处理电子邮件的项目,而实际上并不需要其他任何内容。您可以尝试使用下面的代码来查看它们对您是否有用;

<?php 

/* connect to gmail */ 
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX'; 
$username = '[email protected]'; 
$password = 'pass123'; 

/* try to connect */ 
$inbox = imap_open($hostname, $username, $password, OP_READONLY,1) or die('Cannot connect to Gmail: ' . print_r(imap_last_error())); 
$emails = imap_search($inbox, 'ALL'); 

/* if emails are returned, cycle through each... */ 
if ($emails) { 

    foreach ($emails as $email_number) { 

     echo imap_fetchbody($inbox, $email_number, 0); 
     echo imap_fetchbody($inbox, $email_number, 1); 
     echo imap_fetchbody($inbox, $email_number, 2); 

    } 

} 

imap_close($inbox); 
?> 

棘手的部分是imap_fetchbody($inbox, $email_number, 0)。这部分将返回标题。一旦你得到它们,你可以解析或使用它,如你所愿。

希望它有帮助。

+0

谢谢!其实我的问题是关于解析,所以检索标题后。使用单独的解析器或使用imap_header()来完成此操作更安全,然后只需获取该对象的值。 – 2013-03-27 06:19:21

+0

对不起。既然你从IMAP服务器本身获得这些数据,是的。我相信这是获取邮件标题最可靠的方式。 – Tim 2013-03-27 13:26:37