Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP邮件正在发送到垃圾邮件_Php_Email_Spam_Spam Prevention_Email Spam - Fatal编程技术网

PHP邮件正在发送到垃圾邮件

PHP邮件正在发送到垃圾邮件,php,email,spam,spam-prevention,email-spam,Php,Email,Spam,Spam Prevention,Email Spam,我知道这个网站上有很多类似的问题,但没有一个能帮到我 我有以下PHP代码: <?php $to = "mymail@inbox.com"; $from = "no-reply@heygee.com"; $subject = "Confirm your registration!"; $message = "Please follow this link to confirm your registration: www.bit.ly/32106"; $headers = "MIME-Ve

我知道这个网站上有很多类似的问题,但没有一个能帮到我

我有以下PHP代码:

<?php
$to = "mymail@inbox.com";
$from = "no-reply@heygee.com";
$subject = "Confirm your registration!";
$message = "Please follow this link to confirm your registration: www.bit.ly/32106";

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: HeyGee! <no-reply@heygee.com>" . "\r\n" .
"Reply-To: mymail@inbox.com" . "\r\n" .
"X-Mailer: PHP/" . phpversion();

$ok = @mail($to, $subject, $message, $headers, "-f " . $from);   
?>

比如说
mymail@inbox.com
是我的测试电子邮件。每当我将邮件发送到我的地址时,我总是在垃圾邮件文件夹中接收邮件。为什么呢?是否有任何更正或技巧可以防止邮件以垃圾邮件的形式送达


谢谢。

这与您的编程本身无关。将电子邮件过滤为垃圾邮件是在客户端完成的,对此您无法进行任何更改(如果是的话,数百万垃圾邮件发送者会这么做)

您的问题是,您的电子邮件看起来像垃圾邮件。试着写一封更好的电子邮件,邮件正文长度超过一行。我也会删除主题中的感叹号;这也让它看起来像垃圾邮件


如果您的垃圾邮件检测系统向您提供了有关为什么将其标记为垃圾邮件的详细信息(SpamAssassin可以根据其配置进行标记),然后使用该信息修复您发送的电子邮件。

您的邮件被发送到垃圾邮件文件夹的原因要么是因为您的电子邮件内容,要么是因为接收方无法验证电子邮件是否确实来自
发件人
地址中的指定域,即发件人(您)被授权代表
heygee.com
发送电子邮件

内容部分很容易纠正。你需要避免语法错误、模棱两可的链接(例如说
google.com
但指向
example.com
)等。你的邮件应该措辞得体(不包括垃圾邮件中经常出现的词),最好还包括
取消订阅链接(如果发送到邮件列表)

现在是第二个困难的部分。您在
from
地址中写入的域应与您从中执行此邮件脚本的域相同,或者应获得此域的TXT记录的授权以代表其发送邮件。最简单的方法是(如果您有权
DNS
访问发送域名),添加
TXT SPF
记录,允许脚本所在服务器的IP代表其发送邮件。 示例
SPF
记录:

"v=spf1 ip6:1080::8:800:200C:417A/96 -all"
上述记录意味着
允许1080::8:800:0000:0000和1080::8:800:FFFF:FFFF之间的任何IPv6地址。

结帐:

还有,你可以看看这里

现在,如果您没有DNS访问权限,那么只需将
地址的域名从
更改为服务器的域名,它就会修复它


希望有帮助。

另一个问题可能是发送邮件服务器。发送邮件服务器应该是为发件人域配置的真实邮件服务器。发件人域的nslookup应返回邮件服务器ip。对发件人ip的反向查找应返回发件人域。OP可能需要查看DNS中的SPF记录/DKIM,这与编程无关,此问题最好重新措辞,并在服务器故障或超级故障时询问-user@steven仅当您有SPF记录时;如果你不这么做,那也没问题。