PHPMailer发送电子邮件但客户端没有收到它们

时间:2013-12-09 13:38:43

标签: php email phpmailer

我在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中为一般验证电子邮件提供的认可吗?

1 个答案:

答案 0 :(得分:2)

我会发表评论,但我的观点不够。

这件事发生在几周前。只是想分享一下,如果您使用的是通用共享托管计划,请要求您的虚拟主机将域配置为启用SPF。 (我的软件包没有默认设置这些设置-只需与您的Web主机服务器一起检查即可。)

在我的虚拟主机服务器上托管的某些域正在接收电子邮件,而其他域则没有(这些电子邮件被退回给发件人,即使它们是通过Gmail发送的)。在有人建议您使用共享主机计划时,我无法弄清楚问题出在哪里。

您还可以在cPanel的论坛https://forums.cpanel.net/threads/email-can-send-not-receive.594419/

中找到有关此主题的信息

只需2美分,希望对您有所帮助。