Dengan perkembangan Internet, e-mel telah menjadi alat komunikasi yang sangat diperlukan dalam kehidupan seharian manusia. Sama ada e-mel perniagaan, e-mel peribadi atau pelbagai e-mel pemberitahuan, jumlah e-mel yang dihantar adalah sangat besar. Walau bagaimanapun, kawalan aliran e-mel sentiasa menjadi isu penting dalam sistem e-mel. Untuk memastikan kebolehpercayaan sistem, kestabilan dan keselamatan, pelayan mel biasanya mengehadkan dan mengawal trafik semasa menghantar mel. Dalam penghantaran e-mel PHP, cara menetapkan kawalan aliran telah menjadi masalah yang perlu dihadapi oleh pembangun. Artikel ini akan memperkenalkan anda kepada kaedah tetapan kawalan aliran semasa menghantar e-mel dalam PHP.
1. Apakah itu kawalan aliran e-mel?
Kawalan aliran mel merujuk kepada mengehadkan dan mengawal trafik penghantaran sistem e-mel melalui strategi dan algoritma tertentu. Trafik dalam sistem mel terdiri daripada dua bahagian: bilangan mesej dan saiz mesej. Kawalan aliran direka bentuk untuk memastikan operasi normal sistem e-mel dan mengelakkan masalah seperti ranap sistem dan kehilangan data yang disebabkan oleh menghantar terlalu banyak e-mel. Kawalan aliran sistem mel biasanya dibahagikan kepada dua jenis: kawalan aliran berasaskan masa dan kawalan aliran berasaskan kuantiti atau saiz.
Kawalan trafik berasaskan masa: capai kawalan trafik dengan mengehadkan kekerapan dan selang masa menghantar e-mel. Kebanyakan pelayan mel mengehadkan bilangan mesej yang dihantar seminit, jam atau hari. Contohnya, pelayan mel tertentu hanya membenarkan 100 e-mel dihantar setiap jam, dan e-mel yang melebihi had akan ditolak untuk dihantar.
Kawalan trafik berdasarkan volum atau saiz: Hadkan bilangan atau saiz mesej yang dihantar. Sebagai contoh, pelayan mel tertentu mengehadkan saiz setiap e-mel kepada tidak lebih daripada 10MB, atau setiap peti mel hanya boleh menghantar 50 e-mel setiap hari.
2. Kaedah tetapan kawalan aliran penghantaran e-mel PHP
PHP ialah bahasa pembangunan web yang popular dan salah satu bahasa yang biasa digunakan untuk penghantaran e-mel. Dalam PHP, pelaksanaan penghantaran e-mel memerlukan penggunaan protokol SMTP dan perpustakaan kelas SMTP. Berikut menggunakan PHPMailer sebagai contoh untuk memperkenalkan kaedah tetapan kawalan aliran semasa menghantar e-mel dalam PHP.
Dalam PHPMailer, kita boleh menggunakan fungsi setTimeLimit() atau fungsi sleep() untuk melaksanakan kawalan aliran berasaskan masa seperti berikut:
// 设置单个邮件发送时间间隔为1秒 $mail->setTimeLimit(1); // 设置每发送10封邮件停顿10秒钟 if($i % 10 === 0){ sleep(10); }
Dalam PHPMailer, kita boleh mencapai kawalan aliran berdasarkan kuantiti atau saiz dengan menetapkan saiz atau bilangan e-mel e-mel. Berikut ialah contoh kod PHP:
// 设置单个邮件大小不能超过10MB $mail->addStringAttachment(file_get_contents($attachment), $name, 'base64', 'application/octet-stream', 'attachment', true); if($mail->AttachmentSize() > 10 * 1024 * 1024){ throw new Exception('Attachment size error.', 400); } // 设置每个邮箱每天只能发送50封邮件 if(empty($mailbox['send_times']) || $mailbox['send_times'] < 50){ // 发送邮件 $mail->send(); // 更新发送次数 $send_times = $mailbox['send_times'] + 1; $sql = "UPDATE `email_accounts` SET `send_times` = $send_times WHERE `email` = '".$mailbox['email']."'"; $db->query($sql); }else{ throw new Exception('Emails out of quota.', 400); }
3. Langkah berjaga-jaga untuk tetapan kawalan aliran
4. Ringkasan
Kawalan aliran mel ialah bahagian penting dalam memastikan operasi normal sistem mel. Dalam penghantaran e-mel PHP, kita boleh menggunakan kaedah tetapan kawalan aliran berdasarkan masa, kuantiti atau saiz untuk mengawal trafik penghantaran e-mel. Melalui strategi kawalan aliran yang munasabah, tetapan dan pemantauan terperinci, operasi normal sistem e-mel dapat dipastikan dan masalah seperti kehilangan data dan ranap sistem dapat dielakkan.
Atas ialah kandungan terperinci PHP melaksanakan tetapan kawalan aliran semasa menghantar e-mel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!