imap_fetchbody并在线下剥离

时间:2012-08-31 00:16:17

标签: php

我有一个脚本可以检查电子邮件并将它们放入数据库中。这可以在编写和发送新电子邮件时正常工作。但是,如果我回复电子邮件,则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,那么在我开始剥离文本之前,所有内容都会显示出来。

1 个答案:

答案 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);