"Password not accepted from server: 535 Incorrect authentication data" lors de l'envoi avec GMail et phpMailer

j'ai le même script php qui tourne sur localhost - mon PC avec XAMPP et sur un serveur hébergé. Il fonctionne à partir de mon PC, mais pas à partir du serveur hébergé.

quand je l'envoie depuis le serveur hébergé, j'obtiens la sortie suivante:

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

je soupçonne qu'il y a un paramètre de configuration qui doit être modifié sur le serveur, mais je ne sais pas lequel. Tout conseil serait grandement apprécié!

voici le 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

20
demandé sur Vikas Arora 2013-01-12 23:47:02

2 réponses

la solution était d'activer la SMTP sortante à partir des paramètres du serveur.

sur les serveurs qui exécutent le WHM de cPanel, ceci est situé sous la section" Réglages de Tweak " du WHM.

l'option est d'activer/désactiver - choose disable.

mise en garde: ce changement redirigera les connexions SMTP sortantes permettre aux comptes de faire des connexions directes qui peuvent augmenter vos chances de faire de votre serveur une liste noire.

44
répondu John Dorner 2013-01-21 19:17:16

ceci est lié à WHM / cPanel , vous pouvez faire la même chose que dans la réponse précédente ou à partir de shell en tapant ce

/scripts/smtpmailgidonly off

vous devriez obtenir

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

plus de lecture ici https://forums.cpanel.net/threads/cant-enable-smtp-restrictions.360971/

3
répondu Nassim 2017-06-15 11:50:17