Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah operasi penghantaran e-mel biasa dalam pengaturcaraan PHP?

Apakah operasi penghantaran e-mel biasa dalam pengaturcaraan PHP?

WBOY
WBOYasal
2023-06-12 09:27:001790semak imbas

Dalam pengaturcaraan PHP, operasi penghantaran e-mel adalah sangat biasa. Anda biasanya boleh menggunakan penghantaran e-mel untuk melaksanakan fungsi seperti pemberitahuan sistem, langganan e-mel, tetapan semula kata laluan dan jemputan acara. Mari kita lihat operasi penghantaran e-mel biasa dalam pengaturcaraan PHP.

1 Gunakan fungsi mail() untuk menghantar e-mel

Cara paling mudah dan langsung untuk menghantar e-mel dalam PHP ialah menggunakan fungsi mail(). Fungsi ini ialah fungsi yang disertakan dengan PHP dan tidak memerlukan pemasangan sambungan lain. Berikut ialah kod contoh mudah untuk menghantar e-mel menggunakan fungsi mail():

$to = '收件人邮箱';
$subject = '邮件主题';
$message = '邮件内容';
$headers = 'From: 发件人邮箱' . "
" .
           'Reply-To: 发件人邮箱' . "
" .
           'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

$headers di sini ialah maklumat pengepala e-mel dan anda perlu menetapkan Daripada, Balas-Kepada dan maklumat lain. Apabila menggunakan fungsi mail() untuk menghantar e-mel, anda perlu memberi perhatian kepada perkara berikut:

  1. Pembolehubah $to perlu ditetapkan ke alamat e-mel untuk menerima e-mel
  2. Dari dan Balas dalam pembolehubah $headers -To perlu ditetapkan kepada alamat e-mel pengirim
  3. Jika alamat pengirim tidak berada dalam nama domain yang sama dengan pelayan, ia akan dipintas oleh beberapa mel; pelayan atau dianggap sebagai spam;
  4. E-mel dihantar Proses mungkin lambat Jika masa menunggu terlalu lama, anda boleh menggunakan penghantaran tak segerak berbilang benang; fungsi menggunakan fungsi penghantaran mel asli sistem, mungkin terdapat ralat semasa proses penghantaran Spam atau disekat oleh tembok api.
  5. 2. Gunakan pelayan SMTP untuk menghantar e-mel

Menggunakan pelayan SMTP untuk menghantar e-mel boleh mengelak daripada dianggap sebagai spam daripada menggunakan fungsi mel(). Pada masa ini terdapat beberapa perpustakaan SMTP PHP yang sangat baik tersedia, seperti PHPMailer. Pustaka kelas ini mempunyai kebolehubahsuaian yang kukuh dan antara muka API yang mesra, dan menyokong kaedah penghantaran e-mel teks biasa, e-mel HTML, e-mel lampiran, dsb. pelayan SMTP. Berikut ialah contoh kod untuk menghantar e-mel teks biasa menggunakan PHPMailer:

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;

require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';

$mail = new PHPMailer(true);
$mail->isSMTP();

try {
  $mail->SMTPDebug = 0;
  $mail->Host       = 'smtp.example.com';
  $mail->SMTPAuth   = true;
  $mail->Username   = '发件人邮箱';
  $mail->Password   = '发件人邮箱密码';
  $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
  $mail->Port       = 465;

  $mail->setFrom('发件人邮箱');
  $mail->addAddress('收件人邮箱');
  $mail->Subject = '邮件主题';
  $mail->Body = '邮件内容';

  $mail->send();

  echo '邮件发送成功';
} catch (Exception $e) {
  echo "邮件发送失败:{$mail->ErrorInfo}";
}

Kod ini berdasarkan pustaka kelas PHPMailer dan boleh dipasang terus melalui Composer dan diimport ke dalam tiga fail Exception, PHPMailer dan SMTP. Perlu diingat bahawa alamat e-mel pengirim di sini perlu konsisten dengan alamat pengirim yang diberikan oleh pembekal perkhidmatan SMTP, jika tidak, masalah "pengesahan penghantar gagal" akan berlaku.

3 Gunakan perkhidmatan e-mel pihak ketiga untuk menghantar e-mel

Dalam peringkat perusahaan atau aplikasi yang memerlukan penghantaran e-mel yang banyak, anda boleh mempertimbangkan untuk menggunakan pembekal perkhidmatan e-mel pihak ketiga. , seperti SendGrid, Mailgun, dsb. Pembekal perkhidmatan ini biasanya menyambung kepada pelanggan melalui antara muka API, yang menyelamatkan klien proses mewujudkan sambungan terus dengan pelayan SMTP dan membolehkan mereka menikmati perkhidmatan penghantaran e-mel yang lebih baik. Berikut ialah contoh kod untuk menggunakan SendGrid untuk menghantar e-mel:

$url = 'https://api.sendgrid.com/v3/mail/send';

$data = array(
    "personalizations" => array(
        array(
            "to" => array(
                 array(
                     "email" => "收件人邮箱"
                  )
            ),
            "subject" => "邮件主题"
        )
    ),
    "from" => array(
        "email" => "发件人邮箱"
    ),
    "content" => array(
        array(
            "type" => "text/plain",
            "value" => "邮件内容"
        )
    )
);

$options = array(
    'http' => array(
        'method' => 'POST',
        'header' => array(
            'Content-Type: application/json',
            'Authorization: Bearer ' . 'SendGrid API KEY'
        ),
        'content' => json_encode($data),
    ),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$response = json_decode($result, true);

if (in_array(substr($response['status'], 0, 1), array(
     '2', '3'
))) {
    echo '邮件发送成功';
} else {
    echo '邮件发送失败';
}

Kod sampel ini menggunakan antara muka API yang disediakan oleh SendGrid Anda perlu mendaftar di laman web rasmi SendGrid terlebih dahulu dan mendapatkan KUNCI API. Memandangkan SendGrid ialah penyedia perkhidmatan berbayar, anda perlu memilih pakej yang sesuai dan volum penghantaran berdasarkan situasi perniagaan anda sebelum menggunakannya.

Ringkasan

Artikel ini memperkenalkan operasi penghantaran e-mel biasa dalam pengaturcaraan PHP, termasuk menggunakan fungsi mel(), menggunakan pelayan SMTP untuk menghantar e-mel dan menggunakan perkhidmatan e-mel pihak ketiga untuk menghantar e-mel . Memandangkan teknologi dan strategi yang berkaitan dengan penghantaran e-mel berubah dengan cepat, adalah disyorkan bahawa pembangun memilih kaedah penghantaran e-mel yang paling sesuai dengan mereka berdasarkan keperluan khusus dan keadaan percubaan dalam aplikasi sebenar.

Atas ialah kandungan terperinci Apakah operasi penghantaran e-mel biasa dalam pengaturcaraan PHP?. 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