使用PHP处理邮件失败?
如果我通过GMail发送电子邮件到此地址使用PHP处理邮件失败?,php,email,email-validation,Php,Email,Email Validation,如果我通过GMail发送电子邮件到此地址nkhkhlkhlkjlkjkljlkjlk@gmail.com 我得到的错误如下: 向以下收件人的传递永久失败 我的问题是,如果我使用PHPmail函数发送邮件,我如何才能捕获反弹邮件 我的代码: // To send HTML mail, the Content-type header must be set $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: tex
nkhkhlkhlkjlkjkljlkjlk@gmail.com
我得到的错误如下:
向以下收件人的传递永久失败
我的问题是,如果我使用PHPmail
函数发送邮件,我如何才能捕获反弹邮件
我的代码:
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
$to = "nkhkhlkhlkjlkjkljlkjlk@gmail.com";
$subject = "Testing";
$message = "Testing body";
mail($to, $subject, $message, $headers);
//要发送HTML邮件,必须设置内容类型头
$headers='MIME版本:1.0'。“\r\n”;
$headers.='内容类型:文本/html;字符集=iso-8859-1'。“\r\n”;
//附加标题
$headers.='To:Mary,Kelly'。“\r\n”;
$headers.=“发件人:生日提醒”。“\r\n”;
$headers.='Cc:birthdayarchive@example.com' . “\r\n”;
$headers.='密件抄送:birthdaycheck@example.com' . “\r\n”;
$to=”nkhkhlkhlkjlkjkljlkjlk@gmail.com";
$subject=“测试”;
$message=“测试主体”;
邮件($to、$subject、$message、$headers);
在邮件退出邮件功能后,PHP对邮件一无所知,因此无法在发送邮件的同时执行此操作。使用此功能时,您可以通过邮件获取邮件:
$bounce = 'test@domian.com';
mail($to, $subject, $message, $headers,"-f $bounce");
这会将所有回退邮件发送到您的地址仅使用mail()无法检测此类错误。您必须指定一个有效的返回地址,然后连接到该邮箱(通过IMAP或POP,有相应的功能)并检查是否有任何邮件被退回。请记住,反弹可能需要很长时间(甚至几个小时,由于暂时错误),因此您必须异步执行此检查。您可以使用,它包含一个
parseAddressList()
方法,用于检查电子邮件地址的服务器是否接受电子邮件地址。它还返回有用的错误消息。PHPmail()
函数的返回值确实是一个错误状态,但它不会接收此类错误,因为它只检查电子邮件是否已发送,而不是是否已收到
(这是因为它需要立即将控制权返回到程序;它不能等待可能的反弹消息,因为它们可能需要很长时间才能返回-您不会希望您的程序等待五天,以防电子邮件反弹,是吗?)
因此,确定邮件是否已跳转的唯一方法是使用单独的程序检查跳转将发送到的邮箱
您可以使用邮件选项字符串中的-f
选项指定用于反弹的邮箱(有关此选项的更多信息,请参阅)
然后让一个单独的程序定期检查邮箱中的跳出消息,并根据需要向您报告。(有许多PHP库允许您检查邮箱;Google将在这里提供帮助,或者在PEAR中查找)
确定它是哪封电子邮件将取决于反弹消息的质量。您肯定能够看到预期收件人的电子邮件地址,但可能无法分辨它是哪封电子邮件,即无法将其与您首先调用mail()
函数时的特定实例相匹配
希望对您有所帮助。您应该通过IMAP或POP3登录收件箱,解析电子邮件地址和发送错误
还值得一提的是,您可以指定(发送时)自定义标题,以便更好地跟踪消息源,我相信MailChimp和其他人会这样做,跟踪活动等等。ya我尝试过,但效果不好,如果您愿意,我将向您发送代码。不管怎样,谢谢你的回答“工作不好”,那么它有什么作用,什么不起作用呢?$mail_to=”muralisherla@gmail.com, nkhkhlkhlkjlkjkljlkjlk@gmail.com"; 我有两封邮件在“收件人”中,第一封邮件我可以发送,但第二封邮件我没有收到回音。我现在有点困惑:)当你替换邮件时($to,$subject,$message,$headers);以美元计test@domian.com'; 邮件($to,$subject,$message,$headers,“-f$bounce”);你有没有收到错误邮件?我现在无法从工作中查看。。。当我有时间的时候,今晚我会测试它。