繁体   English   中英

phpmailer没有发送电子邮件到gmail,yahoo,hotmail或这些阻止了phpmailer发送的电子邮件

[英]phpmailer not sending email to gmail,yahoo,hotmail or these are blocking email sent by phpmailer

我正在使用PHPmailer发送电子邮件

这是我使用的代码:

        $mail = new PHPMailer(); 

        $subject = "test";
        $to = "test_patel@yahoo.com"
        $mail->SetFrom("PDSociety@aol.com","Punjab Dental Society");
        $mail->AddReplyTo("PDSociety@aol.com", "Punjab Dental Society");
        $mail->Subject = $subject;
        $mail->MsgHTML($str);
        $mail->AddAddress($to, "Punjab Dental Society");    
        if(!$mail->Send()) 
        {
          $err = "Mailer Error: " . $mail->ErrorInfo;
          //echo $err;
        } else {
          $msg = "Message sent!";
        }
        // Clear all addresses and attachments for next loop
        $mail->ClearAddresses(); 

如果我将电子邮件地址从yahoo更改为gmail或hotmail,仍然不会发送电子邮件。

我通过回显错误进行检查,但没有错误。

谁能解释这是什么问题?

在尝试了各种方式之后,我发现以下代码可与几乎所有电子邮件提供商一起使用

$to['email'] = "recipients email address";      
$to['name'] = "name";   
$subject = "email subject";
$str = "<p>Hello, World</p>";
$mail = new PHPMailer;
$mail->IsSMTP();                                     
$mail->SMTPAuth = true;
$mail->Host = 'Specify main and backup server here';
$mail->Port = 465;
$mail->Username = 'xyz@domainname.com';
$mail->Password = 'email account password';
$mail->SMTPSecure = 'ssl';
$mail->From = 'From Email Address';
$mail->FromName = "Any Name";
$mail->AddReplyTo('xyz@domainname.com', 'any name'); 
$mail->AddAddress($to['email'],$to['name']);
$mail->Priority = 1;
$mail->AddCustomHeader("X-MSMail-Priority: High");
$mail->WordWrap = 50;    
$mail->IsHTML(true);  
$mail->Subject = $subject;
$mail->Body    = $str;
if(!$mail->Send()) {
$err = 'Message could not be sent.';
$err .= 'Mailer Error: ' . $mail->ErrorInfo;                        
}

$mail->ClearAddresses();

变量值需要相应地更改。 希望这些可以帮助人们解决PHPmailer的问题

尝试这个 :

$mail = new PHPMailer(true);      // the true param means it will throw exceptions on errors, which we need to catch

        $mail->IsSMTP();            // telling the class to use SMTP
        try {
            $mail->AddAddress($to['email'],$to['name']);
            $mail->FromName = '';

            $mail->Subject = $subject;
            $mail->MsgHTML($message);


            $send = true;
            return $mail->Send();

        } catch (phpmailerException $e) {
        echo    $e->errorMessage(); //Pretty error messages from PHPMailer
        } catch (Exception $e) {
            $e->getMessage(); //Boring error messages from anything else!
        }

如果有任何异常错误,它将为您提供帮助。

PHPMailer仅参与将消息提交到您自己的邮件服务器,并且那里没有任何问题。 之后,您的邮件服务器将负责继续发送邮件,因此您将在邮件服务器的日志中找到答案。

没有简单的方法来确保邮件最终进入收件箱而不是垃圾邮件-如果存在,垃圾邮件发送者将使用它,而过滤将毫无用处。 确保您的DNS前后解析,具有有效的SPF记录,使用DKIM签名邮件(对于Yahoo尤其重要),最重要的是,不要发送收件人认为是垃圾邮件的邮件。

您是否在这里查看过该帖子: 使用PHPMailer结果导致许多被阻止的电子邮件 询问者通过更改电子邮件主题解决了该问题:

好吧,我解决了这个问题; 上面的代码不是问题,并且效果很好。

在我的主题中,我使用了一个有关“验证您的帐户信息”的短语,这在一些ISP上被阻止了。

因此,教训是,您的主题很重要。 在意识到这一点之前,我一直在看自己的php代码和身体内容。

电子邮件的内容及其主题可以使ISP禁止它。 您可以尝试从收件箱中提取一封收到的电子邮件的内容,看看是否可以通过。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM