web-dev-qa-db-fra.com

"Mot de passe non accepté du serveur: 535 données d'authentification incorrectes" lors de l'envoi avec GMail et phpMailer

J'ai le même script php exécuté sur localhost - mon PC avec XAMPP et sur un serveur hébergé. Cela fonctionne depuis mon PC, mais pas depuis le serveur hébergé.

Lorsque 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: [email protected] FAILED

Je soupçonne qu'un paramètre de configuration doit être modifié sur le serveur, mais je ne sais pas lequel. Tout avis 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
John Dorner

La solution consistait à activer le SMTP sortant à partir des paramètres du serveur.

Sur les serveurs exécutant le WHM de cPanel, cela se trouve dans la section "Tweak Settings" de WHM.

L'option est d'activer/désactiver - choisissez désactiver.

Avertissement: cette modification redirigera les connexions SMTP sortantes et permettra aux comptes d'établir des connexions directes, ce qui pourrait augmenter vos chances de voir votre serveur mis sur liste noire.

48
John Dorner

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 ceci

/scripts/smtpmailgidonly off

tu devrais 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/

4
Nassim