使用PHP Mailer从本地服务器之外的电子邮件地址发送smtp电子邮件

使用PHP Mailer从本地服务器之外的电子邮件地址发送smtp电子邮件,php,email,phpmailer,Php,Email,Phpmailer,我想使用PHPMailer为我的网站配置联系人页面。我面临的问题是,要使脚本正常工作,必须在本地服务器中设置发件人地址,例如,如果我的域是example.com,则发件人地址必须是name@example.com。当我这样设置时,脚本工作得非常完美。 我遇到的问题是,作为一个联系人页面,发件人地址必须是发件人的电子邮件地址,这意味着如果客户使用以下电子邮件地址与我联系name@email.com,脚本将抛出类似于以下错误的错误: SMTP ERROR: DATA END command fail

我想使用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 ).

有人知道如何解决这个问题吗?或者有其他选择吗?我将感谢您提供的任何形式的帮助。提前谢谢。

根据蒂格的建议,您不应使用提交人的地址作为发件人地址发送。这是伪造的,会使您的邮件无法通过SPF检查,从而导致邮件跳转或被寄送到垃圾邮件文件夹时出现无止境的传递问题。至少十年来,人们一直在积极反对它,这也是导致您容易受到PHPMailer安全漏洞攻击的做法之一,该漏洞早在12月份就已修复

既然您已经用PHPMailer标记了它,我将演示如何使用它来满足您的要求:

$mail->setFrom('me@example.com', 'Contact form');
$mail->addReplyTo($_POST['email'], $_POST['name']);
这正是我们要做的。还值得检查提交的值-
addReplyTo
将自动验证地址,因此您应该检查返回值以确保


可能有一些电子邮件客户端无法正确处理回复地址,但您不应该因为少数客户端的不称职而被列入黑名单。

这取决于电子邮件服务器的配置。与管理该邮件的人员交谈或查找其他邮件。您可以使用
回复
标题,并将
设置为本地电子邮件,如(在您的示例中)
noreply@example.com
@Tigger当我使用标题中的
回复时,它仍然从
地址回复
。正确的语法应该是
回复:your@email.com
回复:you@email.com
。我可能把小写的
r
抛给了你。请参阅:了解更多信息。我认为最简单的方法就是使用外部SMTP服务器。我使用-每月最多可免费发送1000封邮件。工作完美。