2

这是我的情况:

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

我现在解决这个问题的方法是设置 From email 和 name,如下所示:

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

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

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

我意识到这可以通过单独留下 From email 字段并使用$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;
4

1 回答 1

2

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

$m->setFrom('my@inbox.com', $name);
$m->addAddress('my@inbox.com');
$m->addReplyTo($email);
于 2016-10-11T15:26:12.983 回答