Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pustaka mel dalam PHP8.0

Pustaka mel dalam PHP8.0

WBOY
WBOYasal
2023-05-14 08:49:501060semak imbas

Baru-baru ini, PHP8.0 mengeluarkan perpustakaan mel baharu, menjadikannya lebih mudah untuk menghantar dan menerima e-mel dalam PHP. Pustaka ini mempunyai ciri yang hebat termasuk membina e-mel, menghantar e-mel, menghuraikan e-mel, mendapatkan lampiran dan menyelesaikan isu tersekat e-mel.

Dalam banyak projek, kami perlu menggunakan e-mel untuk komunikasi dan beberapa operasi perniagaan yang diperlukan. Pustaka mel dalam PHP8.0 membolehkan kami mencapai ini dengan mudah. Seterusnya, kami akan meneroka perpustakaan mel baharu ini dan melihat cara menggunakannya dalam aplikasi kami.

Pasang pustaka mel
Mula-mula, kita perlu menggunakan Composer untuk memasang pustaka mel PHP8.0. Dalam direktori projek kami, kami boleh menjalankan arahan berikut:

composer require phpmailer/phpmailer

Arahan ini akan memasang pustaka PHPMailer, yang merupakan perpustakaan mel standard untuk PHP8.0.

Mewujudkan sambungan
Sebelum kami menggunakan perpustakaan mel, kami perlu mewujudkan sambungan dengan pelayan SMTP. Kita boleh menggunakan protokol SMTP untuk menghantar e-mel. Pelayan SMTP memerlukan alamat dan port SMTP. Menggunakan perpustakaan mel dalam PHP8.0, kami boleh menggunakan kod berikut untuk mewujudkan sambungan dengan pelayan SMTP:

gunakan PHPMailerPHPMailerPHPMailer;
gunakan PHPMailerPHPMailerException;

memerlukan 'vendor/autoload .php ';
$mail = PHPMailer(true);

cuba {

//Server settings
$mail->SMTPDebug = SMTP::DEBUG_SERVER;                      //Enable verbose debug output
$mail->isSMTP();                                            //Send using SMTP
$mail->Host       = 'smtp.gmail.com';                       //Set the SMTP server to send through
$mail->SMTPAuth   = true;                                   //Enable SMTP authentication
$mail->Username   = 'yourname@gmail.com';                  //SMTP username
$mail->Password   = 'yourpassword';                         //SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;            //Enable implicit TLS encryption
$mail->Port       = 465;                                    //TCP port to connect to; use 587 if you have no SSL/TLS support

//Recipients
$mail->setFrom('yourname@gmail.com', 'Your Name');
$mail->addAddress('recipient@example.com', 'Recipient Name');     //Add a recipient

//Content
$mail->isHTML(true);                                          //Set email format to HTML
$mail->Subject = 'Test Email';
$mail->Body    = 'This is a test email.';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

$mail->send();
echo 'Message has been sent';

} tangkap (Pengecualian $e) {

echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";

}

Dalam kod di atas, kami mula-mula memperkenalkan perpustakaan PHPMailer dan mencipta contoh PHPMailer. Kami kemudiannya menyediakan alamat pelayan SMTP, nombor port dan nama pengguna, kata laluan dan pengesahan SMTP yang didayakan. Kami juga memformat dan mengisi e-mel serta menyatakan alamat pengirim dan penerima.

Menggunakan perpustakaan mel
Selepas menyediakan sambungan dengan pelayan SMTP, kami boleh menggunakan perpustakaan mel PHP8.0 untuk menghantar e-mel. Kami boleh menggunakan kod berikut untuk menghantar e-mel:

//Kandungan
$mail->isHTML(true); //Tetapkan format e-mel kepada HTML
$mail->Subjek = 'E-mel Ujian';
$mail->Body = 'Ini ialah e-mel ujian.';
$mail->AltBody = 'Ini ialah isi dalam teks biasa untuk klien mel bukan HTML' ;

$mail->send();

Kaedah isHTML() dalam kod di atas digunakan untuk menentukan bahawa kandungan e-mel yang dihantar adalah dalam format HTML. Atribut Subjek menentukan subjek e-mel, atribut Body menentukan kandungan e-mel dan atribut AltBody menentukan kandungan teks biasa e-mel supaya ia tidak boleh dilihat menggunakan klien e-mel berformat HTML.

Menghuraikan e-mel
Pustaka mel PHP8.0 juga menyediakan fungsi menghuraikan e-mel. Kita boleh menggunakan kod berikut untuk menghuraikan e-mel:

// Muatkan mesej e-mel
$mail = new PHPMailer();
$mail->setServer('smtp.gmail. com ', 'nama pengguna', 'kata laluan');
$mail->setPort('587');
$mail->addAddress('recipient@example.com', 'John Doe') ;

// Dapatkan keseluruhan kandungan e-mel
$mail->retrieve();

// Tukar badan e-mel kepada rentetan UTF-8
$emailBody = $ mail->utf8ize($mail->Body);

// Parsing e-mel menggunakan fungsi imap terbina dalam PHP
$imapStream = imap_open('{imap.gmail.com:993 / imap/ssl}INBOX', 'username', 'password');
$message = imap_fetchbody($imapStream, 1, "");

// Parsing badan e-mel menggunakan PHP terbina dalam Fungsi DOM
$dom = new DOMDocument();
@$dom->loadHTML($emailBody);
$data = array();
$header = $dom-> getElementsByTagName ('header')->item(0);
foreach($header->childNodes sebagai $node) {

if ($node->nodeName == 'from') {
    list($name, $email) = explode(' <', $node->nodeValue);
    $data['from_name'] = $name;
    $data['from_email'] = str_replace('>', '', $email);
} elseif ($node->nodeName == 'date') {
    $data['date'] = date('Y-m-d H:i:s', strtotime($node->nodeValue));
} elseif ($node->nodeName == 'subject') {
    $data['subject'] = $node->nodeValue;
}

}

retrieve( dalam kod di atas ) kaedah digunakan untuk mendapatkan semula kandungan keseluruhan e-mel. Selepas menukar kandungan e-mel ke dalam format UTF-8, kami boleh menggunakan fungsi imap terbina dalam PHP untuk menghuraikan e-mel. Kami juga boleh menggunakan fungsi DOM PHP untuk menghuraikan maklumat pengepala e-mel.

Ringkasan
Pustaka mel PHP8.0 memudahkan penggunaan e-mel dalam aplikasi PHP. Perpustakaan menyediakan fungsi yang berkuasa termasuk membina e-mel, menghantar e-mel, menghuraikan e-mel dan mendapatkan lampiran e-mel. Dengan menggunakan perpustakaan PHPMailer, kami boleh melaksanakan fungsi mel dengan mudah dan menggunakannya dalam aplikasi kami.

Atas ialah kandungan terperinci Pustaka mel dalam PHP8.0. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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