【问题标题】:PHPMailer sends emails but the client does not receive themPHPMailer 发送电子邮件但客户端没有收到它们
【发布时间】:2013-12-26 15:29:26
【问题描述】:

我在 PHPMailer 中特别有问题。我有一个联系表格,并使用 PHPMailer 发送电子邮件。显然我可以发送,对我来说它返回“true”,但电子邮件没有到达您的收件箱。我尝试了几种方法来查找错误,但没有成功。我尝试启用和禁用带有和不带有 SMTP 身份验证的 SMTP,多种形式。按照下面的代码进行操作。

<?php
session_start();
require("phpmailer/class.phpmailer.php");

$mail = new PHPMailer();

//$mail->IsSMTP();
$mail->Host = "smtp.mysite.com";
$mail->SMTPAuth = false; 
$mail->Username = 'my@email.com';
$mail->Password = 'passhere';

$mail->From = "Newsletter";
$mail->Subject = "Newsletter";
$email = $_POST['email_news'];
$mail->AddAddress('my@email.com');
$mail->IsHTML(true);
$mail->CharSet = 'utf-8';

$mail->Body = "
    <html>
        <body>
        <b>Email:</b> $email<br/><br/>
        </body>
    </html>             
";

if(!$email){
    $result = "error";
}else{
    $send = $mail->Send();
    if($send){
        $result = "sucess";
    }else{
        $result = "error";
        echo $mail->ErrorInfo;
    }
}

$mail->ClearAllRecipients();
$mail->ClearAttachments();

header("Location: http://www.mysite.com");

?>

我设法通过 gmail 使用身份验证解决了我的问题。身份验证如下:

$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->Username = 'my@email.com';
$mail->Password = 'passhere';

但我有一个疑问。此验证码仅用于从 gmail 发送电子邮件?或者它是gmail为PHPMailer中的一般验证电子邮件提供的背书?

【问题讨论】:

  • 请检查您的垃圾邮件...
  • 您没有回显$result - 您确定,该邮件已发送?你检查过你的垃圾邮件文件夹吗?
  • 我假设你已经让他们检查他们的垃圾邮件过滤器?它可能在另一端被阻止?
  • 是的,正在发送消息,它返回“true”。收件箱没有用于测试的垃圾邮件过滤器,仍然没有得到。我在另一个站点上使用相同的配置,它工作正常,不明白会发生什么。
  • 如何确定它返回 true? $result 应该是“成功”,但 $result 永远不会打印出来。 $result “成功”了吗?

标签: php email phpmailer


【解决方案1】:

我会发表评论,但我没有足够的积分。

这发生在我几周前。只是想分享一下,如果您使用的是通用共享主机计划,请让您的网络主机配置域以启用 SPF。 (我的软件包默认没有这些设置 - 请与您的网络托管服务器联系)。

托管在我的虚拟主机服务器上的一些域正在接收电子邮件,而其他域则没有(即使电子邮件是通过 Gmail 发送的,它们也会被退回给发件人)。我不知道问题出在哪里,直到有人建议如果您使用共享托管计划,请检查您的记录。

您也可以在 cPanel 的论坛https://forums.cpanel.net/threads/email-can-send-not-receive.594419/找到有关它的主题

只是我的 2 美分,希望对某人有所帮助。

【讨论】:

  • 我同意,我只是提交关于 SPF 的答案,但看到你已经建议了。 SPF 记录 + SMTP + 确保 IP 未被列入黑名单应该可以解决问题。
猜你喜欢
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-10
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
相关资源
最近更新 更多