联系表单中的 PHPMailer + Postfix:当 'spoofing' 用户电子邮件时如何防止被标记为垃圾邮件

PHPMailer + Postfix in a contact form: how to prevent being marked as spam when 'spoofing' user email

这是我的情况:

我正在结合使用 PHPMailer 和 Postfix 将联系表中的信息发送到邮箱中。我想让它看起来好像来自联系表单的电子邮件是由提交数据的用户发送的(而不是来自 root@domain.com)。

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

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

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

有没有办法让它进入我的收件箱?有什么方法可以将 'spoofing' 发件人(即我的服务器)列入白名单?

我意识到这可以通过单独保留发件人电子邮件字段并使用 $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;

不,您不能伪造地址并期望它有效。正确的方法是将您自己的地址放在发件人地址中,并将提交者的地址放在回复中。您可以通过将提交者的 姓名 与发件人地址放在一起来避免视觉上的混淆。这样它看起来就像来自提交者,回复将到达正确的位置,并且您没有伪造任何东西。

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