Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Proses lengkap menghantar e-mel menggunakan PHP menggunakan protokol SMTP

Proses lengkap menghantar e-mel menggunakan PHP menggunakan protokol SMTP

王林
王林asal
2023-05-23 09:21:052148semak imbas

Dengan perkembangan Internet, e-mel telah menjadi salah satu cara komunikasi harian yang penting untuk orang ramai. Dalam aplikasi Web, menghantar e-mel telah menjadi salah satu fungsi yang diperlukan, dan dengan pembangunan aplikasi Web, cara menghantar e-mel juga telah bertambah baik. Antaranya, kaedah penghantaran e-mel berdasarkan protokol SMTP telah menjadi salah satu cara yang paling biasa digunakan untuk menghantar e-mel dalam aplikasi Web. Seterusnya, artikel ini akan memperkenalkan secara terperinci proses lengkap penghantaran e-mel menggunakan protokol PHP SMTP.

1. Pengenalan kepada protokol SMTP

SMTP (Simple Mail Transfer Protocol) ialah protokol pemindahan mel ringkas, iaitu protokol yang digunakan untuk memindahkan mel antara komputer. Apabila menghantar e-mel, protokol SMTP perlu dihantar melalui berbilang pelayan Oleh itu, semasa menghantar e-mel, anda perlu menentukan pelayan yang menghantar e-mel dan pelayan yang menerima e-mel. Protokol SMTP mempunyai dua mod pautan: mod teks biasa dan mod penyulitan. Mod teks biasa merujuk kepada protokol SMTP yang tidak menyulitkan Teks biasa penghantaran data boleh dipintas dan diganggu oleh pengguna yang berniat jahat. Mod penyulitan menggunakan protokol SMTP untuk mewujudkan sambungan selamat bagi memastikan keselamatan penghantaran data.

2. Proses menghantar e-mel menggunakan PHP menggunakan protokol SMTP

Proses menghantar e-mel secara kasar dibahagikan kepada tiga langkah: mewujudkan sambungan, mengesahkan identiti dan menghantar e-mel.

  1. Mewujudkan sambungan

Sebelum menggunakan protokol SMTP, anda perlu menentukan alamat dan nombor port pelayan SMTP. Secara amnya, alamat pelayan SMTP boleh didapati daripada pembekal perkhidmatan e-mel. Nombor port pelayan SMTP biasanya 25 atau 465. Apabila menggunakan protokol keselamatan SSL, nombor port ialah 587. Selepas menentukan alamat pelayan SMTP dan nombor port, anda perlu mewujudkan sambungan dengan pelayan SMTP melalui kod PHP.

Kod PHP untuk mewujudkan sambungan adalah seperti berikut:

<?php
$smtp_server = ''; // SMTP服务器地址
$smtp_port = ''; // SMTP服务器端口
$smtp_socket = fsockopen($smtp_server, $smtp_port, $errno, $errstr, 30);
?>

Fungsi fsockopen digunakan untuk mewujudkan sambungan dengan pelayan SMTP. Jika sambungan berjaya, pembolehubah $smtp_socket akan mengandungi sambungan ke pelayan SMTP. Jika tidak, pembolehubah $errno dan $errstr akan mengandungi maklumat ralat tentang kegagalan sambungan.

  1. Pengesahan Identiti

Protokol SMTP memerlukan identiti mesti disahkan sebelum menghantar e-mel. Kaedah pengesahan identiti SMTP yang biasa digunakan termasuk PLAIN, LOGIN dan CRAM-MD5. Antaranya, kaedah pengesahan PLAIN tidak menyulitkan kata laluan, manakala dua kaedah lain akan menyulitkan kata laluan.

Kod PHP untuk pengesahan SMTP adalah seperti berikut:

<?php
$email_address = ''; // 发送方的Email地址
$email_password = ''; // 发送方的Email密码
if ($smtp_socket && $email_address && $email_password) {
    // 进行身份认证
    fwrite($smtp_socket, "AUTH LOGIN
");
    fwrite($smtp_socket, base64_encode($email_address) . "
");
    fwrite($smtp_socket, base64_encode($email_password) . "
");
}
?>

Antaranya, fungsi base64_encode digunakan untuk mengekod alamat e-mel dan kata laluan untuk mengelakkan pemintasan dan kecurian kata laluan.

  1. Hantar e-mel

Selepas melengkapkan pengesahan SMTP, anda boleh menghantar e-mel melalui protokol SMTP. Sebelum menghantar e-mel, anda perlu menetapkan kandungan e-mel, subjek, penerima, penghantar dan maklumat lain. Kandungan e-mel boleh ditulis dalam kod html atau dalam format teks biasa.

Kod PHP untuk menghantar e-mel menggunakan protokol SMTP adalah seperti berikut:

<?php
$to = ''; // 收件人Email地址
$subject = ''; // 邮件主题
$content = ''; // 邮件内容
$email_from = ''; // 发送方Email地址
$email_to = ''; // 收件人Email地址
if ($smtp_socket && $to && $subject && $content && $email_from && $email_to) {
    // 设置邮件头部
    fwrite($smtp_socket, "MAIL FROM:<{$email_from}>
");
    fwrite($smtp_socket, "RCPT TO:<{$email_to}>
");
    fwrite($smtp_socket, "DATA
");
    // 设置邮件主体
    fwrite($smtp_socket, "From: {$email_from}
");
    fwrite($smtp_socket, "To: {$to}
");
    fwrite($smtp_socket, "Subject: {$subject}
");
    fwrite($smtp_socket, "Content-Type: text/html; charset=utf-8
");
    fwrite($smtp_socket, "
");
    fwrite($smtp_socket, "{$content}
.
");
    // 结束SMTP会话
    fwrite($smtp_socket, "QUIT
");
}
?>

Dalam kod di atas, pengepala dan badan e-mel ditetapkan, dan kandungan e-mel dihantar melalui protokol SMTP . Jika e-mel berjaya dihantar, maklumat yang menunjukkan bahawa e-mel telah berjaya dihantar akan dikembalikan.

3. Ringkasan

Artikel ini memperkenalkan secara ringkas proses lengkap menghantar e-mel menggunakan protokol SMTP dalam PHP. Antaranya, mewujudkan sambungan, mengesahkan identiti dan menghantar e-mel adalah pautan utama dalam keseluruhan proses. Dengan mempelajari artikel ini, anda akan menguasai keseluruhan proses penghantaran e-mel menggunakan protokol SMTP, dan memahami cara mewujudkan sambungan selamat dan melaksanakan pengesahan identiti SMTP. Pada masa yang sama, anda juga boleh menetapkan pengepala dan badan e-mel mengikut keperluan sebenar untuk mencapai fungsi penghantaran e-mel tersuai.

Atas ialah kandungan terperinci Proses lengkap menghantar e-mel menggunakan PHP menggunakan protokol SMTP. 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
Artikel sebelumnya:Panduan induk untuk PHPArtikel seterusnya:Panduan induk untuk PHP