Google App Engine
Я бы написал это в Google App Engine (Python), потому что:
- Хорошо масштабируется.
- У него хороший API для электронной почты.
- У него есть очередь задач с хорошим API для доступа к ней.
- Потому что Python - действительно хороший язык.
- Это (относительно) дешево.
PHP
Если бы я реализовал это в PHP, я бы
- Найдите себе хороший SMTP-сервер, который позволяет отправлять такой объем почты, поскольку Gmail не позволяет отправлять такой объем. Я уверен, что это будет стоить вам денег.
- Найдите себе достойную библиотеку электронной почты PHP для отправки сообщений, например PHPMailer, как вы сказали.
- Используйте очередь сообщений, например, beanstalkd, чтобы помещать сообщения электронной почты в очередь и отправлять электронную почту асинхронно. Во-первых, потому что при этом пользователь будет загружать страницу быстрее. Во-вторых, с помощью очереди сообщений, такой как beanstalkd, вы можете лучше регулировать скорость отправки, что предотвратит перегрузку вашего компьютера работой. Вам потребуется ssh доступ к серверу для компиляции (установки) beanstalkd. Вы можете найти beanstalkd в beanstalkd
- Вам также потребуется доступ ssh для запуска PHP-скрипта в фоновом режиме, который будет обрабатывать очередь сообщений. Вы можете найти beanstalkd-клиент по адресу php beanstalkd-client
с php / apache / webpage
Это страница, с которой вы будете отправлять сообщения пользователю. С этой страницы вы отправите сообщение beanstalkd, кодируя что-то в следующих строках:
// register Pheanstalk class loader
require_once('pheanstalk_init.php');
$pheanstalk = new Pheanstalk('127.0.0.1');
$message = ""; // This would contain your message
$pheanstalk->put(json_encode($message);
Вы должны помещать сообщения в очередь сообщений, используя команду put
Из продолжительного PHP-скрипта в фоновом режиме:
Код будет выглядеть примерно так:
// register Pheanstalk class loader
require_once('pheanstalk_init.php');
$pheanstalk = new Pheanstalk('127.0.0.1');
while(true) {
$job = $pheanstalk->reserve();
$email = json_decode($job->getData());
// Sent email using PHP mailer.
$pheanstalk->delete($job);
}
Как я уже говорил, это возможно и с помощью движка приложений на PHP и Google, но я бы остановился на движке приложений, потому что его проще реализовать.