我有一个脚本可以检查电子邮件并将它们放入数据库中。这可以在编写和发送新电子邮件时正常工作。但是,如果我回复电子邮件,则imap_fetchbody不起作用且为空。
我在哪里错了?
/* get information specific to this email */
$overview = imap_fetch_overview($inbox,$email_number,0);
$structure = imap_fetchstructure($inbox,$email_number);
$message = imap_fetchbody($inbox,$email_number,0);
$header = imap_headerinfo($inbox,$email_number);
//print_r($structure);
//make sure emails are read or do nothing
if($overview[0]->seen = 'read'){
//strip everything below line
$param="## In replies all text above this line is added to the ticket ##";
$strip_func = strpos($message, $param);
$message_new = substr($message,0,$strip_func );
/* output the email body */
$output.= '<div class="body">'.$message_new.'<br><br></div>';
如果我输出$ message而不是$ message_new,那么在我开始剥离文本之前,所有内容都会显示出来。
答案 0 :(得分:0)
如果消息中根本不存在“In reply ...”行,strpos
将返回布尔值false
,强制转换为整数时将为0。
因此,当您要求从0到该位置的子字符串时,您要求从0到0的子字符串,并且$message_new
为空。
在尝试根据它获取子字符串之前,请检查邮件中是否存在该行。
$param="## In replies all text above this line is added to the ticket ##";
$strip_func = strpos($message, $param);
$message_new = ($strip_func === false) ? $message : substr($message,0,$strip_func);