2016-10-11 172 views
1

这是我的情况时,被标记为垃圾邮件:PHPMailer的+后缀的联系表格:如何防止“邮件欺骗”用户电子邮件

我使用的PHPMailer和Postfix的组合来得到一个接触的形式信息到一个邮箱。我希望看起来好像从联系表单到达的电子邮件是从提交数据的用户(而不是从[email protected])发送的。

我现在解决这个问题的方法,是通过设置从电子邮件,名称,像这样:

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

即出现的问题,是这样的:因为设置了从电子邮件,我的电子邮件服务提供商( zoho)将其视为垃圾邮件(我假设,因为我在技术上欺骗电子邮件地址),因此它会出现在垃圾邮件文件夹中。

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

我意识到这可以通过单独离开From电子邮件字段并使用$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('[email protected]'); 

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

要做到这一点,afaik的唯一方法就是在该域的真实邮件服务器上添加SPF记录和/或DKIM。那么它就是那个告诉其他邮件服务器的邮件服务器(当他们检查是否允许从该域发送电子邮件的来源时)说:“是的,该服务器被允许发送带有这个域的邮件”。或多或少 –

+0

有没有办法告诉我的电子邮件提供商,当一个特定的域名(我的域名)欺骗,而不是将其归类为垃圾邮件? – idix

回答

1

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

$m->setFrom('[email protected]', $name); 
$m->addAddress('[email protected]'); 
$m->addReplyTo($email); 
+0

嗯,我想尽可能多...这仍然是最好的解决方案。 – idix

+0

你也不能用伪造的地址进行DKIM签名,这是现在交付给任何主要ISP的必要条件。 – Synchro