0

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

4

1 回答 1

0

如果消息中根本不存在该行“在回复中...”,strpos则将返回 boolean 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);
于 2012-08-31T01:03:00.967 回答