Maison  >  Article  >  développement back-end  >  Détection d'e-mail PHP : Déterminez si l'e-mail a été envoyé avec succès.

Détection d'e-mail PHP : Déterminez si l'e-mail a été envoyé avec succès.

WBOY
WBOYoriginal
2023-09-19 09:16:551698parcourir

Détection de-mail PHP : Déterminez si le-mail a été envoyé avec succès.

Détection d'e-mail PHP : Déterminez si l'e-mail a été envoyé avec succès.

Lors du développement d'applications Web, il est souvent nécessaire d'envoyer des e-mails pour communiquer avec les utilisateurs. Qu'il s'agisse de confirmation d'inscription, de réinitialisation de mot de passe ou d'envoi de notifications, la fonction e-mail est un élément indispensable. Cependant, nous ne pouvons parfois pas garantir si l'e-mail a été envoyé avec succès. Nous devons donc effectuer une détection d'e-mail et déterminer si l'e-mail a été envoyé avec succès. Cet article explique comment utiliser PHP pour implémenter cette fonction.

1. Utilisez le serveur SMTP pour envoyer des e-mails

Tout d'abord, nous devons utiliser le serveur SMTP pour envoyer des e-mails, car le protocole SMTP fournit un mécanisme d'envoi d'e-mails fiable. En PHP, nous pouvons utiliser la bibliothèque de classes SMTP pour implémenter cette fonction.

require 'path/to/phpmailer/autoload.php';

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;

$mail = new PHPMailer(true);
try {
    $mail->SMTPDebug = 0;                                 // Enable verbose debug output
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.example.com';                      // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'your-email@example.com';           // SMTP username
    $mail->Password = 'your-email-password';              // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587;                                    // TCP port to connect to

    $mail->setFrom('your-email@example.com', 'Your Name');
    $mail->addAddress('recipient@example.com', 'Recipient Name');
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = 'Test Subject';
    $mail->Body    = 'This is a test email.';

    $mail->send();
    echo 'Email has been sent.';
} catch (Exception $e) {
    echo 'Email could not be sent. Error: ', $mail->ErrorInfo;
}

Ce code utilise la bibliothèque de classes PHPMailer, configure les informations pertinentes du serveur SMTP et envoie un e-mail de test.

2. Détection de l'état de l'e-mail

L'envoi d'un e-mail ne signifie pas que l'e-mail a réellement été reçu, nous devons donc utiliser la détection de l'état de l'e-mail pour déterminer si l'e-mail a été envoyé avec succès. En PHP, nous pouvons obtenir l'état du courrier via la réponse du serveur SMTP.

if ($mail->send()) {
    $response = $mail->getSMTPInstance()->getLastResponse();
    if (preg_match('/^250/', $response)) {
        echo 'Email has been sent.';
    } else {
        echo 'Email could not be sent. Response: ' . $response;
    }
} else {
    echo 'Email could not be sent. Error: ', $mail->ErrorInfo;
}

Après l'envoi de l'e-mail, ce code obtient la réponse du serveur SMTP via la méthode getSMTPInstance() et utilise des expressions régulières pour déterminer si la réponse commence par 250 Si c'est le cas, cela signifie que l'e-mail a été envoyé avec succès. getSMTPInstance()方法获取SMTP服务器的响应,并使用正则表达式判断响应是否以250开头,如果是则表示邮件发送成功。

三、邮件投递状态反馈

除了通过SMTP服务器的响应判断邮件是否发送成功外,我们还可以通过邮件投递状态反馈来获取更详细的信息。在PHP中,可以使用回执邮件的方式来实现。

$mail->addCustomHeader('Return-Receipt-To: your-email@example.com');
$mail->addCustomHeader('Disposition-Notification-To: your-email@example.com');

if ($mail->send()) {
    echo 'Email has been sent.';
} else {
    echo 'Email could not be sent.';
}

这段代码在发送邮件之前,通过addCustomHeader()

3. Commentaires sur l'état de livraison des e-mails

En plus de juger si l'e-mail a été envoyé avec succès via la réponse du serveur SMTP, nous pouvons également obtenir des informations plus détaillées grâce aux commentaires sur l'état de livraison des e-mails. En PHP, cela peut être réalisé en utilisant un e-mail de réception.

rrreee

Ce code ajoute des informations sur l'e-mail de réception de retour via la méthode addCustomHeader() avant d'envoyer l'e-mail. Lorsque le destinataire ouvre l'e-mail et confirme sa lecture, nous recevrons un e-mail de réception grâce auquel nous pourrons confirmer si l'e-mail a été reçu et lu.

Résumé : 🎜🎜Grâce à la méthode ci-dessus, nous pouvons déterminer si l'e-mail a été envoyé avec succès. Dans le développement réel, nous pouvons choisir des méthodes appropriées de détection des e-mails en fonction de différents besoins afin de garantir la fiabilité et l'actualité des e-mails. 🎜🎜 (Remarque : l'adresse e-mail et le mot de passe dans l'exemple ci-dessus doivent être remplacés par votre véritable adresse e-mail et votre mot de passe, et assurez-vous que le serveur SMTP est correctement configuré.) 🎜

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!

Déclaration:
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