由于某些奇怪的原因,如果用户尝试向自己发送电子邮件,则会运行成功函数,但用户永远不会收到电子邮件。
如果$toAddress
和$fromAddress
相同,则用户永远不会收到该电子邮件。如果他们与用户不同。
此处已阅读了几个问题,并说如果电子邮件与服务器位于同一个域,则会阻止垃圾邮件。但是用户电子邮件与服务器不在同一个域中?用我的Gmail帐户测试了这个。 Reply-to
不是我实际使用的电子邮件,它只是简单的文字。
$to = $toAddress;
$subject = 'This is an email';
$message = $message;
$headers = 'From: '. $fromAddress . "\r\n" .
'Reply-To:do-not-reply@gmail.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion() . "\r\n" .
'MIME-Version: 1.0' . "\r\n" .
'Content-Type: text/html; charset=UTF-8';
if(mail($to, $subject, $message, $headers)){
echo '{"status": "success", "senderAddress": "' . $_SERVER['REMOTE_ADDR'] . '", "content": "' . $_POST['toAddress'] . '"}';
} else {
echo '{"status": "fail", "toAddress": ' . $toAddress . '", "fromAddress": "' . $fromAddress . '"}';
}
答案 0 :(得分:1)
排除mail()
功能中的标题并进行尝试。标题正在触发GMail的过滤系统。如果从Gmail发送邮件,则会有一些基于域密钥的身份验证,用于验证发件人的身份。
您可能需要创建包含此文本的TXT DNS记录:
v=spf1 include:_spf.google.com ~all
在您的DNS服务器中,授权您的域名发送电子邮件。
答案 1 :(得分:0)
由于过滤系统包含Gmail和Hotmail,当您将自己用作接收器时,它将直接转换为Gmail和Hotmail中的垃圾邮件。对于Gmail,如果两个值不同,它将进入您的收件箱,而Hotmail仍会将其视为垃圾邮件。