簡體   English   中英

Gmail SMTP錯誤與PHP Mailer

[英]Gmail SMTP Error With PHP Mailer

我知道這個問題已經問了很多,我已經閱讀了大部分。

嘗試使用我的Gmail帳戶通過PHP Mailer和WAMP Server從PHP發送電子郵件時,出現此錯誤。

  1. 它一直工作到昨天沒有任何問題(大約三個月以來)。
  2. 我沒有更改郵件助手功能中的任何代碼。
  3. 在我的Wamp設置中啟用了php-openssl.dll。
  4. 嘗試過ssl和465,無法連接。
  5. 我在Google設置中啟用了“允許安全性較低的應用程序”。
  6. 我試過使用gethostbyname()。 它不起作用。
  7. 它與我組織的電子郵件服務器配合使用,該服務器不使用任何安全性。

這是我的phpmailer功能代碼。 正在從數據庫中檢索所有設置。 由於它是一個多用戶應用程序。

// Email Settings
    $from=$details->from;
    $mailer=$details->mailer;
    $subject=$details->subject;

    $mail = new PHPMailer(true);                                // Passing `true` enables exceptions
    try {
        //Server settings
        $mail->SMTPDebug = $settings->debug;                    // Enable verbose debug output
        $mail->isSMTP();                                        // Set mailer to use SMTP
        $mail->Host = $settings->host;          // Specify main and backup SMTP servers
        $mail->SMTPAuth = true;                                 // Enable SMTP authentication
        $mail->Username = $settings->login;                     // SMTP username
        $mail->Password = $pass;                                // SMTP password
        $mail->SMTPSecure = $settings->security;                // Enable TLS encryption, `ssl` also accepted
        $mail->Port = $settings->port;                          // TCP port to connect to

        //From
        $mail->setFrom($from, $mailer);

        //Recipients
        $mail->addAddress($details->to,$details->recipientName);     // Add a recipient           // Name is optional
        $mail->addReplyTo($from, $mailer);
        foreach($quote->cc as $cc)
        {
            $mail->addCC($cc);
        }
        //Attachments
        foreach($quote->attachments as $file)
        {
            $mail->addAttachment($file);    // Add attachments  // Optional name
        }
        //Content
        $mail->isHTML(true);                                  // Set email format to HTML
        $mail->Subject = $subject;
        $mail->Body    = $message;
        $mail->AltBody = 'Non-HTML Mail Clients Not Supported, Please View This email in a browser or get a HTML friendly Email Client.';
        $mail->send();
    }
    catch (Exception $e)
    {
        $return=array(1,'Error: '.$mail->ErrorInfo);
    }
return $return;
}

我得到的錯誤是

2017-12-04 07:15:26 SERVER -&gt; CLIENT: 220 smtp.gmail.com ESMTP w9sm23070345pfk.16 - gsmtp<br>
2017-12-04 07:15:26 CLIENT -&gt; SERVER: EHLO projects<br>
2017-12-04 07:15:26 SERVER -&gt; CLIENT: 250-smtp.gmail.com at your service, [49.213.37.11]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8<br>
2017-12-04 07:15:26 CLIENT -&gt; SERVER: STARTTLS<br>
2017-12-04 07:15:27 SERVER -&gt; CLIENT: 220 2.0.0 Ready to start TLS<br>
SMTP Error: Could not connect to SMTP host.<br>
2017-12-04 07:15:27 CLIENT -&gt; SERVER: QUIT<br>
2017-12-04 07:15:27 <br>
2017-12-04 07:15:27 <br>
SMTP Error: Could not connect to SMTP host.<br>
[1,"Error: SMTP Error: Could not connect to SMTP host."]

任何幫助表示贊賞。

PS:我使用的設置是

  1. 主持人:smtp.gmail.com。
  2. 用戶名和密碼:我已經檢查過,可以登錄gmail網站上的帳戶。
  3. 安全性:TSL
  4. 端口:587。

我懷疑是否是我的代碼。 如果這是我的代碼,那么它就不能與我組織的電子郵件服務器一起使用,該服務器不如gmail復雜。

我看到類似您的問題的錯誤,並且我通過以下方式解決了我的問題:

  1. 從Apache啟用擴展SSL
  2. 更新來自PHPMailer的最新代碼
  3. 添加一些代碼:

     $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) 

    );

它的工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM