【问题标题】:Getting bounced email. Error in the script收到退回的电子邮件。脚本中的错误
【发布时间】:2012-12-10 06:59:30
【问题描述】:

我试图让退回的邮件检查邮件正文,但由于某种原因,脚本什么也没做。

我检查了有关该主题的所有文档并搜索了解决方案,但找不到任何东西。

我相信你们中的一些人会发现我做错了什么。

这是代码的相关部分。

error_reporting( E_ALL ) ;

$POP3Box = imap_open( "{" . $Domain . ":110/pop3/novalidate-cert", $EmailBox, $EmailPass ) ;

if ( !$POP3Box ) :
  echo '<br /><div class="ErrorMessage"> Connection failed!<br /> Wrong Email address or Password! Please check and try again...</div><br /><br />' ;
  die ;
endif ;

$MessageQty = imap_num_msg( $POP3Box ) ;
echo 'Total messages in "' . $EmailBox . '" = ' . $MessageQty . '<br /><br />' ;
$MailNum = 1 ;
$MailOrder = 1 ;

while ( $MailNum <= $MessageQty ) {// GET MESSAGES
  $EmailBody = imap_fetchbody( $POP3Box, $MailNum, 1 ) ;

  if ( strrpos( $EmailBody, 'Undelivered Mail Returned to Sender' )) {
    imap_delete( $POP3Box, $MailNum ) ;
    $MailOrder++;
  }
  else {
    die ;
  }
  $MailNum++;
}

if ( $MailOrder > 1 )
  imap_expunge( $POP3Box ) ;

if ( $MailNum > 1 ) {
  echo 'No bounced messages found!<br />' ;
}
else {
  echo 'Empty mailbox!<br />' ;
}

【问题讨论】:

  • does nothing 是什么意思?尝试启用错误显示ini_set( 'display_errors', TRUE ); 看看会发生什么,可能在 php.ini 中没有启用。
  • 感谢您的评论。我按照您的建议做了,但仍然没有收到任何错误。这就像脚本没有执行,我确定 php 正在执行。

标签: php email imap


【解决方案1】:

我在脚本中发现了至少 3 个问题:

这是一个错误:...novalidate-cert" 之后缺少}

$POP3Box = imap_open( "{" . $Domain . ":110/pop3/novalidate-cert", $EmailBox, $EmailPass );

必须改为:

$POP3Box = imap_open( "{" . $Domain . ":110/pop3/novalidate-cert"}, $EmailBox, $EmailPass );1

这是一个错误:缺少关闭命令。在expunge之后添加这个:

imap_close( $POP3Box );

这是一个建议:要在正文中搜索的字符串不能只是Undelivered Mail Returned to Sender

有几条消息表示电子邮件被退回或退回。我建议更换这个:

if ( strrpos($EmailBody, 'Undelivered Mail Returned to Sender')) { 使用像这样的正则表达式:

if ( preg_match( "([a-z0-9!#$%&amp;'*+/=?^_{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)", $EmailBody, $BounceMatch )) {

检测所有退回的邮件几乎是不可能的,但使用正则表达式,您将能够捕获接近 95% 的邮件,这非常好。

在我看来,您执行此操作的方式 - 检查邮件正文 - 是迄今为止更有效的方法。

希望这会有所帮助。

【讨论】:

  • 非常感谢您的帮助。现在正在工作,我会检查其他问题。
  • 不客气。是的,你应该检查 php 代码中的错误,我没有。
猜你喜欢
  • 2013-11-26
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
相关资源
最近更新 更多