Как отправлять электронные письма в больших количествах с помощью PHP-скрипта и cronjobs

Мне нужно отправить информационный бюллетень 8000 подписчикам, но мой хост поддерживает только отправку 100 сообщений в час. Мне нужен скрипт php, который выполняет эту работу, отправляя 8000 писем с лимитом в 100 писем в час, если возможно, используя cronjobs, чтобы я не оставил браузер открытым во время работы скрипта.

благодаря

У вас должна быть таблица базы данных с этими столбцами:

=============== Suscribers Table =============== |id (int)|email (varchar)|sent (tinyint) |1|example1@domain.com|0 |2|example2@domain.com|0 |3|example3@domain.com|0 

Тогда что-то вроде этого PHP-скрипта:

 // DB Connection require_once 'db.php'; // Check if we have users with a 0 sent value $query = mysql_query("SELECT COUNT(id) FROM suscribers WHERE sent = 0"); $results = mysql_num_rows($query); // If there's one or more suscribers with a 0 sent value if ($results >= 1) { // Initialize and require Swift or any other email library for PHP require_once 'swift/lib/swift_required.php'; $transport = Swift_SmtpTransport::newInstance('mail.domain.com', 587) ->setUsername('mail@domain.com') ->setPassword('password'); $mailer = Swift_Mailer::newInstance($transport); // Body of the email $body = '<html><head></head><body>Hello suscriber!</body></html>' // Message parameters $message = Swift_Message::newInstance(); $message->setSubject('Newsletter'); $message->setFrom(array('mail@domain.com' => 'Domain Newsletter')); $message->setSender('mail@domain.com'); $message->setBody($body, 'text/html'); // Use a query to get only 100 suscribers from the table who have a 0 sent value $query = mysql_query("SELECT id, email FROM suscribers WHERE sent = 0 LIMIT 100"); while ($data = mysql_fetch_array($query)) { $idEmail = $data['id']; $message->setTo($data['email']); // Update the email sender ID "sent" value to "1" mysql_query("UPDATE suscribers SET sent = 1 WHERE id = $idEmail"); $mailer->send($message); } } 

Наконец, используйте задание cron, подобное этому, которое указывает на ваш PHP-файл cron:

 /usr/bin/php -q /home/domain/public_html/newsletter_cron.php