簡體   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