使用PHP中的PhpMailer和IMAP_SEARCH进行回复跟踪

时间:2018-05-25 16:16:24

标签: php smtp phpmailer imap

我正在使用PHPMailer发送消息和PHP imap_search来搜索邮件。我的情景是 -

  1. 用户从PHPMailer tp收件人发送电子邮件。 (DONE)
  2. 随着电子邮件用户发送自定义消息ID说(DONE)
  3. 收件人回复电子邮件。
  4. 在这里,我需要在用户的收件箱中搜索回复。我需要搜索用户是否收到电子邮件的任何回复。我不知道怎么能这样做。

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

    由于

1 个答案:

答案 0 :(得分:0)

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

let list = [{
  DisplayAQI: 20
}, {
  DisplayAQI: 100
}, {
  DisplayAQI: 200
}, {
  DisplayAQI: 10
}];

let result = list.sort(function(a, b) {
  return b.DisplayAQI - a.DisplayAQI

})[0];
console.log(result)

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

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

概述提供了消息ID等的详细信息。从这里您可以跟踪这是否是回复。 但是,在很少的电子邮件中我们发现消息ID不存在。因此,我们在电子邮件正文中添加了一个唯一ID,并使用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);
}

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