J'ai donc cette application que j'ai construit qui utilise PHPMailer pour envoyer du courrier. Le code fonctionne parfaitement avec ma machine locale, et il fonctionnait parfaitement sur le serveur jusqu'à hier. Cependant, maintenant, quand je cours le code sur mon serveur, je reçois:PHPMailer tout à coup ne fonctionne pas
Le message n'a pas pu être envoyé.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
J'ai littéralement tout essayé. Je n'arrive pas à comprendre pourquoi cela ne fonctionne pas. Du serveur en tant qu'utilisateur le site est installé à, je peux telnet localhost 465
et je peux telnet localhost 587
ainsi le serveur est en place, et ses connexions ne bloquent pas à lui-même. La seule chose que je peux penser est, étant un serveur Cpanel une sorte de mise à jour doit avoir eu lieu avec Apache/PHP qui a causé quelque chose de ne pas fonctionner correctement avec cela. Je sais que le problème n'est pas avec le serveur mail et pas avec le code (puisqu'il fonctionne quand j'exécute exactement ce code depuis ma machine locale) qui ne laisse que la configuration PHP/Apache sur le serveur ...
Quelqu'un at-il un aperçu de ce que cela pourrait être? PS-Je dois utiliser SSL, c'est la seule chose que mon serveur supporte que je sache, au moins je n'ai jamais eu de chance en utilisant TLS ou non crypté.
Voici mon code:
require("vendor/autoload.php");
$mail = new \PHPMailer;
// set up mail settings
$mail->isSMTP();
$mail->Host = 'my.host.com';
$mail->SMTPAuth = true;
$mail->Username = 'username';
$mail->Password = 'password';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->Debugoutput = function($str, $level) {
$GLOBALS['debug'][] = $Host . " - " . $str . " - " . $level;
};
$mail->SMTPDebug = 2;
$mail->CharSet = "UTF-8";
$mail->setFrom(.....);
$mail->addAddress(.....);
$mail->isHTML(true);
$mail->Subject = 'Here is the subject';
$mail->Body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><body>This is the HTML message body <b>in bold!</b></body></html>';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
EDIT:
J'ai changé le niveau de débogage à 3 (pour le débogage de connexion, DERP) et je reçois ceci:
[0] => string (88) "- Connexion: ouverture à ssl: //host.redf1sh.com: 465, timeout = 300, options = array() - 3"
[1] => chaîne (291) "- Échec de la connexion Erreur # 2: stream_socket_client(): échec de l'opération SSL ed avec le code 1. Messages d'erreur OpenSSL: erreur: 14090086: routines SSL: ssl3_get_server_certificate: vérification du certificat a échoué [/path/to/vendor/phpmailer/phpmailer/class.smtp.php ligne 294] - 3 "
[2 ] => string (175) "- La connexion a échoué. Erreur n ° 2: stream_socket_client(): Echec de l'activation de crypto [/path/to/vendor/phpmailer/phpmailer/class.smtp.php ligne 294] - 3 "
[3] => chaîne (215)" - La connexion a échoué. Erreur n ° 2: stream_socket_client(): impossible de se connecter à ssl: //my.host.com: 465 (Erreur inconnue) [/path/to/vendor/phpmailer/phpmailer/class.smtp.php line 294] - 3 "
[4] => string (52) "- erreur SMTP: Echec de la connexion au serveur: (0) - 1"
[5] = string> (89) "- SMTP connect() a échoué . https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting - 3" }
J'avais raison, le SSL lié ... Alors quelqu'un sait comment résoudre ce problème
Pourquoi le vote négatif? – SublymeRick
La prochaine étape logique serait de Google vos erreurs un peu. Encore une fois, si vous n'avez rien changé, peut-être que votre fournisseur de messagerie a changé ses paramètres? Ou est-ce votre propre serveur? Avez-vous essayé simplement de définir le cryptage sur 'tls'? – GregKos
Ouais, je le google. Je sais que je peux passer à côté de ça avec des ssloptions mais je préférerais que la chaîne de certification fonctionne. J'attends d'entendre les gens du serveur. – SublymeRick