Как отправлять большое количество электронных писем с помощью php и командной оболочки
Здесь я сталкиваюсь с проблемой, когда отправляю электронное письмо в цикле. Подробная информация приведена ниже:
У меня есть csv-файл под названием email.csv. Я загружаю этот файл и читаю электронное письмо из этого csv-файла.Я использую фреймворк codeignitor. Код для чтения csv-файла и отправки электронных писем, код приведен следующим образом.
$file = $_FILES['email_from_file'][tmp_name];
$handle = fopen($file,"r");
if (($handle = fopen($file,"r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
for ($c=0; $c < $num; $c++) {
$this->email->clear();
$this->email->set_mailtype("html");
$this->email->to(trim($data[$c]));
$this->email->from('[email protected]');
$this->email->subject($data['news_letter_info'][0]['subject']);
$this->email->message($data['news_letter_info'][0]['template_body']);
$this->email->send();
}
}
fclose($handle);
}
Когда я отправляю электронное письмо, его выполнение и отправка занимают слишком много времени. И мой браузер тоже стал зависать. Так есть ли какой-нибудь возможный способ для отправки этих писем используйте команду оболочки, которая выполнит php-скрипт в фоновом режиме.
Заранее благодарю.
2 answers
Используйте это.
exec('php /<SERVER PATH>/send_bulkmail.php');
В вашем send_bulkmail.php используйте код для чтения файла с помощью fread() или file_get_content() и отправки почты в lood, как вы сделали выше.
Я использую задание Cron для задач такого типа.
Проверьте руководство crontab. http://www.linuxmanpages.com/man5/crontab.5.php
НАПРИМЕР
*/5 * * * * php /u1/dev/cuser5/scripts/cli.php --action project/.../messages/send-email.php
Это означает. запускайте файл отправки электронной почты каждые 5 минут каждый день.
ПРИМЕЧАНИЕ: если вам нужно отправить много писем, вам следует отправлять их небольшими группами.