Maison > développement back-end > tutoriel php > Pourquoi mon code PHPMailer ne parvient-il pas à se connecter à l'hôte SMTP alors que mon client de messagerie fonctionne ?

Pourquoi mon code PHPMailer ne parvient-il pas à se connecter à l'hôte SMTP alors que mon client de messagerie fonctionne ?

Mary-Kate Olsen
Libérer: 2024-12-02 12:22:10
original
213 Les gens l'ont consulté

Why Does My PHPMailer Code Fail to Connect to the SMTP Host, While My Email Client Works?

Surmonter l'obstacle « Erreur SMTP : impossible de se connecter à l'hôte SMTP » de PHPMailer

PHPMailer, une bibliothèque d'envoi de courrier PHP populaire, lance parfois le erreur "Erreur SMTP : impossible de se connecter à l'hôte SMTP." Ce problème peut être rencontré malgré l'envoi réussi d'e-mails via des clients de messagerie comme Thunderbird.

Pour résoudre le problème, examinez les paramètres utilisés dans la configuration opérationnelle de Thunderbird et comparez-les à ceux utilisés par PHPMailer. Le tableau suivant met en évidence les principales différences :

Setting Thunderbird PHPMailer
Server Name mail.exampleserver.com SMTP_HOST
Port 587 SMTP_PORT
Username [email protected] SMTP_USER
Secure Authentication No SMTPAuth
Connection Security STARTTLS Not specified

Le code PHPMailer fourni :

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = SMTP_HOST;
$mail->Port = SMTP_PORT;
$mail->SMTPAuth = true;
$mail->Username = SMTP_USER;
$mail->Password = SMTP_PASSWORD;
$mail->From = MAIL_SYSTEM;
$mail->FromName = MAIL_SYSTEM_NAME;
$mail->AddAddress($aSecuredGetRequest['email']);
$mail->IsHTML(true);
Copier après la connexion

Bien que ces paramètres semblent similaires à la configuration opérationnelle de Thunderbird, la principale différence réside dans le manque de spécification de sécurité de connexion dans le code PHPMailer. Pour résoudre ce problème, ajoutez la ligne suivante à votre script PHPMailer :

$mail->SMTPSecure = 'STARTTLS';
Copier après la connexion

Cette ligne précise que la connexion au serveur SMTP doit utiliser le cryptage STARTTLS. Une fois cet ajustement effectué, votre script PHPMailer devrait envoyer avec succès des e-mails.

Remarque : Si vous rencontrez une erreur liée à l'échec de la vérification du certificat lors de l'utilisation de PHPMailer version 5.6 ou ultérieure, vous pouvez implémenter le solution de contournement suivante :

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);
Copier après la connexion

N'oubliez pas que cette solution de contournement doit être une mesure temporaire et que vous devez résoudre le problème de certificat sous-jacent en remplaçant le certificat invalide par un valide.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal