Как отправлять большое количество электронных писем с помощью 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-скрипт в фоновом режиме.

Заранее благодарю.

Author: Souvick Dey, 2013-06-21

2 answers

Используйте это.

exec('php /<SERVER PATH>/send_bulkmail.php');

В вашем send_bulkmail.php используйте код для чтения файла с помощью fread() или file_get_content() и отправки почты в lood, как вы сделали выше.

 1
Author: Amar Banerjee, 2013-06-21 09:55:27

Я использую задание 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 минут каждый день.

ПРИМЕЧАНИЕ: если вам нужно отправить много писем, вам следует отправлять их небольшими группами.

 0
Author: Haver, 2013-06-21 10:04:36