“Password not accepted from server: 535 Incorrect authentication data” when sending with GMail and phpMailer

匿名 (未验证) 提交于 2019-12-03 02:27:02

问题:

I have the same php script running on localhost - my PC with XAMPP and on a hosted server. It works from my PC, but not from the hosted server.

When I send it from the hosted server, I get the following output:

SMTP -> ERROR: Password not accepted from server: 535 Incorrect authentication data   SMTP -> ERROR: RCPT not accepted from server: 550-Please turn on SMTP Authentication in your mail client, or login to the 550-IMAP/POP3 server before sending your message. dev.camppage.com 550-(patchvalues.com) [205.234.141.238]:50958 is not permitted to relay through 550 this server without authentication.   SMTP Error: The following recipients failed: jdorner4@gmail.com FAILED 

I suspect there is a configuration setting that needs to be changed on the server, but I don't know which one. Any advice would be greatly appreciated!

Here is the code:

function send_gmail ($recipients, $subject, $message, $attachment_filenames = array())  {   global $email_address, $email_password, $email_name;   require_once ($_SERVER['DOCUMENT_ROOT']. '/php/PHPMailer/class.phpmailer.php');       $body  = $message;   $body  = str_replace("\\", '', $body);   $mail = new PHPMailer();   $mail->CharSet = "UTF-8";   $mail->IsSMTP();   $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server   $mail->SMTPDebug  = 1;                     // enables SMTP debug information (for testing) 0 - none; 1 - errors & messages; 2 - messages only   $mail->SMTPAuth   = true;                  // enable SMTP authentication   $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier   $mail->Port       = 465;                   // set the SMTP port   $mail->Username   = $email_address;  // GMAIL username   $mail->Password   = $email_password; // GMAIL password   $mail->SetFrom($email_address);   $mail->FromName   = $email_name;   $mail->AddReplyTo($email_address,$email_name);   $mail->Subject    = $subject;   $mail->MsgHTML($body);   $mail->IsHTML(true); // send as HTML    if (isset ($recipients[0]))   {     foreach ($recipients AS $to)     {         $to_pieces = explode (",", $to, 2);         $to_email = trim ($to_pieces[0]);         if (isset ($to_pieces[1]))             $to_name = trim ($to_pieces[1]);         else             $to_name = " ";         $mail->AddAddress($to_email, $to_name);     }     $mail->IsHTML(true); // send as HTML      if ($mail->Send()){         return TRUE;     } else {         return FALSE;     } }  else  {     return FALSE; } } 

TIA

回答1:

The solution was to enable outgoing SMTP from the server settings.

On servers running cPanel's WHM, this is located under WHM's "Tweak Settings" section.

The option is to enable/disable - choose disable.

Caveat: Making this change will redirect outgoing SMTP connections allow accounts to make direct connections which may increase your odds of getting your server blacklisted.



回答2:

this is related to WHM/cPanel , you can do the same thing as in the previous answer or from shell by typing this

/scripts/smtpmailgidonly off 

you should get

"SMTP Mail protection has been disabled.  All users may make outbound smtp connections." 

more reading here https://forums.cpanel.net/threads/cant-enable-smtp-restrictions.360971/



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!