0

出于某种奇怪的原因,如果用户尝试向自己发送电子邮件,成功函数会运行但用户从未收到电子邮件。如果$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 . '"}';
}
4

2 回答 2

1

排除函数中的标题mail()并尝试。标题正在触发 GMail 的过滤系统。如果邮件是从 Gmail 发送的,则会有一个基于域密钥的身份验证来验证发件人的身份。

您可能需要创建包含此文本的 TXT DNS 记录:

v=spf1 include:_spf.google.com ~all

在您的 DNS 服务器中,授权您的域发送电子邮件。

于 2012-06-25T02:23:29.860 回答
0

由于使用 Gmail 和 Hotmail 的过滤系统,当您将自己用作接收者时,它的发件人会直接进入 Gmail 和 Hotmail 中的垃圾邮件。对于 Gmail,如果这两个值不同,它将进入您的收件箱,而 hotmail 仍会将其视为垃圾邮件。

于 2012-06-28T21:27:38.150 回答