我想使用PHPMailer配置我网站的联系页面。我面临的问题是,要使脚本正常工作,必须在本地服务器中设置来自地址,例如如果我的域名为 example.com ,则起始地址必须为 name@example.com 。当我这样设置时,脚本完美无缺。 我遇到的问题是作为联系页面,来自地址必须是发件人的电子邮件地址,这意味着如果客户通过电子邮件地址(如name@email.com)与我联系,脚本将抛出错误类似于下面的那个:
SMTP ERROR: DATA END command failed:
550-Your FROM address ( name@email.com , Dev Customer 550-)
must match your authenticated email user ( name@example.com ).
有没有人知道如何解决这个问题?还是有其他选择吗?我将不胜感激任何形式的援助。提前谢谢。
答案 0 :(得分:0)
根据Tigger的建议,您应该从不使用提交者的地址作为发件人地址发送。它是伪造的,并且会使您的邮件无法通过SPF检查,导致邮件弹出或托付到垃圾邮件文件夹时无法完成传递问题。无论如何,它已被积极主张至少十年,这也是导致你容易受到12月修复的PHPMailer安全漏洞攻击的做法之一。
由于您已使用PHPMailer对此进行了标记,因此我将展示如何使用它来执行您的要求:
$mail->setFrom('me@example.com', 'Contact form');
$mail->addReplyTo($_POST['email'], $_POST['name']);
这正是the example contact form script provided with PHPMailer所做的。还值得检查提交的值 - addReplyTo
将自动验证地址,因此您应该检查返回值以确定。
可能有些电子邮件客户端无法正确处理回复地址,但由于少数客户的无能,您不应将自己置于黑名单中。