使用PHPmailer回复电子邮件

时间:2015-09-03 08:36:06

标签: php phpmailer

我正在使用PHPmailer,我想回复一封电子邮件。我使用phpimap和他们的message_id一起收到电子邮件。我正在使用PHPmailer尝试回复电子邮件。我在message_id中使用了In-Reply-ToaddCustomHeader。我运行代码,当我检查电子邮件时,它显示为新消息而不是回复。我哪里出错?

require 'PHPMailer-master/PHPMailerAutoload.php';

            $mail = new PHPMailer;

            //$mail->SMTPDebug = 3;                               // Enable verbose debug output

            $mail->isSMTP();                                      // Set mailer to use SMTP
            $mail->Host = 'mail.domain.co.uk';  // Specify main and backup SMTP servers
            $mail->SMTPAuth = true;                               // Enable SMTP authentication
            $mail->Username = 'test@domain.co.uk';                 // SMTP username
            $mail->Password = 'testing';                           // SMTP password
            $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
            $mail->Port = 587;                                    // TCP port to connect to

            $mail->FromName = 'Mailer';
            $mail->addAddress('test_2@domain.co.uk');     // Add a recipient
            $mail->isHTML(true);                          // Set email format to HTML
            $mail->addCustomHeader('In-Reply-To', $message_id);
            $mail->Sender = 'test@domain.co.uk';
            $mail->Subject = 'testing';
            $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
            $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

            if(!$mail->send()) {
                echo 'Message could not be sent.';
                echo 'Mailer Error: ' . $mail->ErrorInfo;
            } else {
                echo 'Message has been sent';
            }

1 个答案:

答案 0 :(得分:4)

使用不同的主题行让线程中的每条消息都很合理,因此如果你做其他所有错误的话,线程仅取决于主题行作为最后的回退。当客户端执行此操作时,实际上非常烦人,因为您最终会收到碰巧将相同主题组合在一起的无关消息。

使用ReferencesIn-Reply-To标题as defined in RFC2822实施线程和回复。请阅读this guide,详细了解如何可靠地进行线程化。

简短版就是这样,对于消息的第一个回复:

$mail->addCustomHeader('In-Reply-To', $message_id);
$mail->addCustomHeader('References', $message_id);

如果原始消息只是长线程中的最新消息,它会变得更复杂,但它使用相同的标题 - 阅读规范和指南以获取更多信息。

确保您的邮件ID格式正确 - 它应该被<>包围,例如<d7751ea969c01cda464ebf2de2fe64e6@example.org>

您不需要对主题行做任何事情 - 尽管在Re:之前常见,但链接工作并不是必需的,而且它也有所不同跨语言,所以你不能依赖它。