使用SMTP、PHPmailer发送邮件时如何知道用户发送和读取邮件

使用SMTP、PHPmailer发送邮件时如何知道用户发送和读取邮件,php,smtp,gmail,sendmail,phpmailer,Php,Smtp,Gmail,Sendmail,Phpmailer,有人知道下面问题的解决方法吗 在我的项目中,我使用smtp、php邮件和gmail脚本向客户发送电子邮件。所以当我发送邮件时,gmail会将邮件发送给特定的客户。为此,我将传递有效的gmail登录名和用户名。所有邮件都正常发送。但有时可能会发生一些客户没有收到邮件,而当时我无法获取或跟踪任何错误。所以我想不管怎样,当我向客户发送邮件时,当客户收到并阅读时,我得到了任何形式的确认 如果有人有任何想法,请帮助我。您可以随时将回复添加到邮件地址,这将在出现任何错误时予以注意,以便您将收到电子邮件,如果

有人知道下面问题的解决方法吗

在我的项目中,我使用smtp、php邮件和gmail脚本向客户发送电子邮件。所以当我发送邮件时,gmail会将邮件发送给特定的客户。为此,我将传递有效的gmail登录名和用户名。所有邮件都正常发送。但有时可能会发生一些客户没有收到邮件,而当时我无法获取或跟踪任何错误。所以我想不管怎样,当我向客户发送邮件时,当客户收到并阅读时,我得到了任何形式的确认


如果有人有任何想法,请帮助我。

您可以随时将回复添加到邮件地址,这将在出现任何错误时予以注意,以便您将收到电子邮件,如果已阅读,请包括一张图片(1像素的空白图片即可)在这张图片中添加代码,你可以看到这张图片收到或收到了多少点击


<?php
/**
* Simple example script using PHPMailer with exceptions enabled
* @package phpmailer
* @version $Id$
*/

require ('../class.phpmailer.php');

try {
        $mail = new PHPMailer(true); //New instance, with exceptions enabled

        $body             = "Please return read receipt to me.";
        $body             = preg_replace('/\\\\/','', $body); //Strip backslashes

        $mail->IsSMTP();                           // tell the class to use SMTP
        $mail->SMTPAuth   = true;                  // enable SMTP authentication
        $mail->Port       = 25;                    // set the SMTP server port
        $mail->Host       = "SMTP SERVER IP/DOMAIN"; // SMTP server
        $mail->Username   = "EMAIL USER ACCOUNT";     // SMTP server username
        $mail->Password   = "EMAIL USER PASSWORD";            // SMTP server password

        $mail->IsSendmail();  // tell the class to use Sendmail

        $mail->AddReplyTo("someone@something.com","SOMEONE");

        $mail->From       = "someone@something.com";
        $mail->FromName   = "SOMEONE";

        $to = "other@something.com";

        $mail->AddAddress($to);

        $mail->Subject  = "First PHPMailer Message[Test Read Receipt]";

        $mail->ConfirmReadingTo = "someone@something.com"; //this is the command to request for read receipt. The read receipt email will send to the email address.

        $mail->AltBody    = "Please return read receipt to me."; // optional, comment out and test
        $mail->WordWrap   = 80; // set word wrap

        $mail->MsgHTML($body);

        $mail->IsHTML(true); // send as HTML

        $mail->Send();
        echo 'Message has been sent.';
} catch (phpmailerException $e) {
        echo $e->errorMessage();
}
?>
需要在上面的脚本中进行一些修改

  • 配置SMTP邮件服务器

  • 设置正确的发件人名称(&F)(someone@something.com(某人)

  • 设置正确的地址


  • 您可以通过两种不同的方式检查,例如,通过使用邮件功能的标题“Disposition Notification To”,它在所有情况下都不会起作用,因为大多数人选择不发送已读回执。如果您可以从服务器影响是否发生这种情况,垃圾邮件发送者可以很容易地识别活动和非活动电子邮件地址。 你可以像这样设置标题

    $email_header .= "Disposition-Notification-To: $from"; 
    $email_header .= "X-Confirm-Reading-To: $from";
    
    现在,另一种检查方法是放置一个图像,您可以添加一个脚本以加载该图像,该脚本将向您的系统发送xxx用户已阅读邮件的通知,这样您就可以跟踪邮件的传递状态

    事实上,我想不出任何方法来确认它已经交付,而不检查它是否被读取,或者包括从服务器请求并记录为已被访问的图像,或者用户必须访问的链接以查看消息的完整内容

    两者都不保证(不是所有的电子邮件客户端都会显示图像或使用HTML),也不是所有的“已发送”邮件都会被读取


    但是,有关详细信息,请参见

    需要什么样的SMTP邮件服务器更改。SMTP邮件服务器更改?只需在上述代码中添加SMTP详细信息?$mail->ConfirmReadingTo=”someone@something.com"; 已将这一行添加到我的代码中,但我仍然没有得到任何确认。我还缺少什么样的改变。如果有人知道,请帮助我。@JigarOza:你能在这里分享你的代码吗,我会让代码为你工作,因为如果不检查代码,我就不知道你为什么没有收到邮件的确认。@JigarOza就像Yuvraj在回答中说的那样,由用户发送阅读收据,而大多数用户选择不发送。我知道我很少把它们寄回去。这可能就是你没有得到确认的原因。通过给自己发一封电子邮件来测试一下。在不让事情变得太复杂的情况下,你可以注册一个像mailgun这样的服务,然后跟踪、接收、打开或反弹都会得到很好的管理。