Rumah > pembangunan bahagian belakang > tutorial php > Pengesanan e-mel PHP: Tentukan sama ada e-mel telah berjaya dihantar.

Pengesanan e-mel PHP: Tentukan sama ada e-mel telah berjaya dihantar.

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-09-19 09:22:01
asal
1949 orang telah melayarinya

Pengesanan e-mel PHP: Tentukan sama ada e-mel telah berjaya dihantar.

Pengesanan e-mel PHP: Tentukan sama ada e-mel telah berjaya dihantar.

Apabila membangunkan aplikasi web, selalunya perlu menghantar e-mel untuk berkomunikasi dengan pengguna Sama ada pengesahan pendaftaran, penetapan semula kata laluan atau pemberitahuan, fungsi e-mel adalah bahagian yang amat diperlukan. Walau bagaimanapun, kadangkala kami tidak dapat memastikan sama ada e-mel benar-benar berjaya dihantar, jadi kami perlu melakukan pengesanan e-mel dan menentukan sama ada e-mel tersebut telah berjaya dihantar. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi ini.

1. Gunakan pelayan SMTP untuk menghantar e-mel

Pertama sekali, kita perlu menggunakan pelayan SMTP untuk menghantar e-mel, kerana protokol SMTP menyediakan mekanisme penghantaran e-mel yang boleh dipercayai. Dalam PHP, kita boleh menggunakan perpustakaan kelas SMTP untuk melaksanakan fungsi ini.

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;
}
Salin selepas log masuk

Kod ini menggunakan perpustakaan kelas PHPMailer, mengkonfigurasi maklumat berkaitan pelayan SMTP dan menghantar e-mel ujian.

2. Pengesanan Status E-mel

Menghantar e-mel tidak bermakna e-mel itu sebenarnya telah diterima, jadi kita perlu menggunakan pengesanan status e-mel untuk menentukan sama ada e-mel tersebut telah berjaya dihantar. Dalam PHP, kita boleh mendapatkan status mel melalui respons pelayan 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;
}
Salin selepas log masuk

Selepas menghantar e-mel, kod ini mendapat respons daripada pelayan SMTP melalui kaedah getSMTPInstance() dan menggunakan ungkapan biasa untuk menentukan sama ada respons bermula dengan 250 . Jika ya, Ini bermakna e-mel telah berjaya dihantar. 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.';
}
Salin selepas log masuk

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

3. Maklum balas status penghantaran e-mel

Selain menilai sama ada e-mel berjaya dihantar melalui respons pelayan SMTP, kami juga boleh mendapatkan maklumat yang lebih terperinci melalui maklum balas status penghantaran e-mel. Dalam PHP, ini boleh dicapai menggunakan e-mel resit pulangan.

rrreee

Kod ini menambah maklumat tentang e-mel resit pemulangan melalui kaedah addCustomHeader() sebelum menghantar e-mel. Apabila penerima membuka e-mel dan mengesahkan membaca, kami akan menerima e-mel resit yang melaluinya kami boleh mengesahkan sama ada e-mel tersebut telah diterima dan dibaca.

Ringkasan: 🎜🎜Melalui kaedah di atas, kita boleh menentukan sama ada e-mel tersebut telah berjaya dihantar. Dalam pembangunan sebenar, kami boleh memilih kaedah yang sesuai untuk pengesanan e-mel berdasarkan keperluan yang berbeza untuk memastikan kebolehpercayaan dan ketepatan masa e-mel. 🎜🎜 (Nota: Alamat e-mel dan kata laluan dalam contoh di atas hendaklah digantikan dengan alamat e-mel dan kata laluan sebenar anda, dan pastikan pelayan SMTP dikonfigurasikan dengan betul.) 🎜

Atas ialah kandungan terperinci Pengesanan e-mel PHP: Tentukan sama ada e-mel telah berjaya dihantar.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan