首页 > 解决方案 > 在 PHP 中使用 PhpMailer 和 IMAP_SEARCH 进行回复跟踪

问题描述

我正在使用 PHPMailer 发送消息并使用 PHP imap_search 来搜索邮件。我的情况是——

  1. 用户从 PHPMailer tp 收件人发送电子邮件。(完毕)
  2. 使用电子邮件用户发送自定义消息 ID 说 (DONE)
  3. 收件人回复电子邮件。

在这里,我需要在用户的收件箱中搜索回复。我需要搜索用户是否收到电子邮件的任何回复。我不确定我该怎么做。

我正在使用 GMAIL SMTP 让用户发送电子邮件。

谢谢

标签: phpsmtpphpmailerimap

解决方案


我们找到了这样的解决方法。为了在 PHPMailer 中发送电子邮件,我们在电子邮件中发送了一个唯一 ID,将其分配到自定义标头中。(您可以在邮件标题的收件人端验证此邮件 ID)。

$mid="<" . md5('MAXIFY'.(idate("U")-1000000000).uniqid()).'-sales@mydomain.com>';
$mail->MessageID = $mid;
$mail->addCustomHeader('In-Reply-To', $mid);
$mail->send();

现在要搜索电子邮件,我们使用了 imap_search。

$date="25-May-2018";
$emails = imap_search($inbox,'ON "'.$date.'"' );
foreach($emails as $email_number)
{
/* get information specific to this email */ 
$overview = imap_fetch_overview($inbox,$email_number,0);
print_r($overview);
}

概述提供了消息 ID 等的详细信息。从这里您可以跟踪这是否是回复。但是,在少数电子邮件中,我们发现消息 ID 不存在。因此,我们在我们的电子邮件正文中添加了一个唯一的 ID,并使用我们的 imap_search 搜索条件就像 -

$emails=imap_search($inbox,'TEXT "5b0b72417f673" ');

我没有找到任何其他方法来跟踪回复。


推荐阅读