联系表单中的PHPMailer + Postfix:如何防止在“欺骗”用户电子邮件时被标记为垃圾邮件

时间:2016-10-11 14:37:29

标签: php email phpmailer spam postfix

这是我的情况:

我正在使用PHPMailer和Postfix的组合将联系表单中的信息添加到邮箱中。我希望看起来好像从联系表单到达的电子邮件是从提交数据的用户发送的(而不是从root@domain.com发送的)。

我现在解决这个问题的方法是设置From电子邮件和名称,如下所示:

$m->setFrom($email, $name);

出现的问题如下:由于设置了From电子邮件,我的电子邮件提供商(zoho)将其视为垃圾邮件(我假设因为我在技术上欺骗了一个电子邮件地址),因此它落在了垃圾邮件文件夹。

有没有办法让它登陆我的收件箱?是否有某种方法可以将“欺骗”发件人(即我的服务器)列入白名单?

我意识到这可以通过单独留下来自电子邮件字段并使用$m->addReplyTo来完成。但我不会是唯一一个使用电子邮件帐户的人,我想避免任何混淆。我的意思是,如果有人看到一封电子邮件进来,并且他们是一个特定的名称,但随后是一个与该名称不符的电子邮件地址,他们可能会感到困惑,或者在回复或向该人发送新电子邮件时出错(他们实际上只是回复服务器)。所以这是一个对我来说不太可行的解决方案。

这是电子邮件设置的完整代码:

$name    = $_POST['name'];
$email   = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];

$m = new PHPMailer;
$m->isSendmail();

$m->setFrom($email, $name);
$m->addAddress('my@inbox.com');

$m->Subject = $subject;
$m->Body = $message;

1 个答案:

答案 0 :(得分:1)

不,你不能伪造地址并期望它能够发挥作用。正确的方法是将您自己的地址放在来自地址,并将提交者的地址放在回复中。您可以通过将提交者的名称与发件人地址放在一起来避免视觉混淆。通过这种方式,它看起来就像来自提交者,回复将会到达正确的地方,而且你不会伪造任何东西。

$m->setFrom('my@inbox.com', $name);
$m->addAddress('my@inbox.com');
$m->addReplyTo($email);