web-dev-qa-db-fra.com

Action du serveur SMTP: 530 5.7.0 Doit d'abord émettre une commande STARTTLS

Action du serveur SMTP: 530 5.7.0 Doit d'abord émettre une commande STARTTLS

Je reçois ce message d'erreur lorsque j'utilise la fonction mail () dans un fichier script php ...

J'utilise gmail serveur SMTP et gmail avec STARTTLS, qui est un protocole SSL sécurisé empêchant les spams Et j'utilise déjà ces commandes dans mon fichier contact.php

ini_set("SMTP","smtp.gmail.com");
ini_set("sendmail_from","<email-address>@gmail.com>");

alors, quelle commande je peux utiliser pour activer STARTTLS ou configurer en php, fichier ini?

15
Waqas Ahmed

Tout d’abord, assurez-vous que votre installation PHP prend en charge SSL (recherchez une section "openssl" dans la sortie de phpinfo()).

Vous pouvez définir les paramètres suivants dans votre fichier PHP.ini:

ini_set("SMTP","ssl://smtp.gmail.com");
ini_set("smtp_port","465");
15
chuckx

J'ai eu une fausse réponse pour ce qui suit:

fputs($connection, 'STARTTLS'.$newLine);

il se trouve que j'utilise la mauvaise variable de connexion, je devais donc simplement la changer en:

fputs($smtpConnect, 'STARTTLS'.$newLine);

Si vous utilisez TLS, n'oubliez pas de mettre HELO avant et après:

fputs($smtpConnect, 'HELO '.$localhost . $newLine);
$response = fgets($smtpConnect, 515);
if($secure == 'tls')
{
    fputs($smtpConnect, 'STARTTLS'.$newLine);
    $response = fgets($smtpConnect, 515);
stream_socket_enable_crypto($smtpConnect, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);

// Say hello again!
    fputs($smtpConnect, 'HELO '.$localhost . $newLine);
    $response = fgets($smtpConnect, 515);
}
0
Frank Forte

A la sortie de la boîte, Swift Mailer ne peut pas STARTTLS, mais certains des gentils gars ont écrit un correctif .

J'ai trouvé que le correctif était un peu une corvée (je l'ai probablement mal fait), je l'ai donc compressé pour le télécharger ici: Swift Mailer avec STARTTLS

0
Richard Williams

Dans mon cas, Swift Mailer ne pouvait pas aider non plus. J'ai trouvé une solution ici: http://forum.powweb.com/showthread.php?t=73406 - donc après la commande EHLO, il faut envoyer la commande STARTTLS, permettant ainsi la cryptographie avec stream_socket_enable_crypto( $connection, true, STREAM_CRYPTO_METHOD_TLS_CLIENT ); et encore la commande EHLO. Seulement cela me permettait d'envoyer des emails avec mon serveur SMTP "têtu".

0
boryn

Je sais que PHPMailer library peut gérer ce type de transaction SMTP.

En outre, un faux sendmail avec une bibliothèque sendmail-SSL devrait faire l'affaire.

0
Alfabravo

Je vais partager mon chemin et cela a fonctionné pour moi après la mise en œuvre suivante:

Ouvrez le fichier Php.ini et remplissez toutes les valeurs dans les champs respectifs en prenant ref de Paramètres SMTP Gmail

Supprimer les commentaires de la [fonction mail] Instructions qui sont des instructions pour le serveur smtp et correspondent à leurs valeurs.

De plus, le serveur SMTP sendmail est un faux serveur. Il n’ya rien à côté d’un terminal texte (essayez d’écrire dessus.: P) . Il utilisera gmail s, tp pour envoyer des Mails . Configurez-le correctement en faisant correspondre les paramètres SMTP de Gmail:

smtp.gmail.com
Port: 587
0
Sudhir Singh