如何知道邮件是使用SMTP,PHPmailer发送邮件时由用户发送和读取的

时间:2013-04-06 05:43:58

标签: php smtp gmail sendmail phpmailer

是否有人知道以下问题的任何解决方案

在我的项目中,我使用smtp和php邮件程序和gmail脚本向客户端发送电子邮件。所以当我发送邮件时,gmail会向特定客户端发送邮件。因为我传递的gmail登录名和有效的用户名。所有邮件都正常发送。但有时可能会发生一些客户端没有收到邮件,那时我无法获取或追踪任何错误。所以我有任何办法,当我向客户发送邮件时,当客户得到它并在那时阅读它我得到了任何形式的确认。

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

3 个答案:

答案 0 :(得分: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();
}
?>

需要在上面的脚本中进行一些修改。

  1. 配置SMTP邮件服务器。

  2. 设置正确的FROM&amp;来自姓名(someone@something.com,某人)

  3. 设置正确的TO地址

  4. from

    1. Delivery reports and read receipts in PHP mail

答案 1 :(得分:0)

你总是可以添加邮件地址的回复,如果有任何错误就会注意,这样你就可以收回邮件了,如果有的话,请附上一张图片(1像素的空白图片可以),并添加代码图片就像你可以看到图像收到或收到的任何点击数量。

答案 2 :(得分:0)

您可以通过两种不同的方式检查这些内容,例如,通过使用标题“Disposition-Notification-To”到您的邮件功能,它将无法在所有情况下工作,因为大多数人选择不发送阅读回执。如果您可以从服务器影响是否发生这种情况,垃圾邮件制造者可以轻松地轻松识别活动和非活动的电子邮件地址。 您可以设置标题

$email_header .= "Disposition-Notification-To: $from"; 
$email_header .= "X-Confirm-Reading-To: $from";

现在要检查的另一种方法是放置一个图像,你可以添加一个脚本来加载该图像,该脚本会向你的系统发送xxx用户读过邮件的通知,这样你就可以跟踪交付邮件的状态。

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

两者都没有保证(并非所有电子邮件客户端都会显示图片或使用HTML),并且不会读取所有“已发送”的消息。

虽然有更多信息https://en.wikipedia.org/wiki/Email_tracking