Массовая рассылка электронных писем программно

StackOverflow https://stackoverflow.com/questions/161212

  •  03-07-2019
  •  | 
  •  

Вопрос

Мне нужно иметь возможность периодически отправлять оповещения по электронной почте подписанным пользователям.PHP, кажется, борется с отправкой один сообщение, поэтому я ищу хорошие альтернативы.

Подойдет любой язык, если реализация достаточно быстрая.Количество отправленных писем в конечном итоге будет исчисляться тысячами.

Если можно избежать покупки лицензионного программного обеспечения, тем лучше.

Это было полезно?

Решение

smtplib в Python — это пустяк в настройке и очень чистый API.

Другие советы

Очередь электронной почты в PHP — короткая версия — Pear’s Mail_Queue.Я использую это для отправки 30-50 000+ писем в день или более (несколько дней в неделю) без проблем уже больше года.

У нас есть различные приложения, записывающие сообщения в очередь электронной почты в таблице базы данных, а также служба Windows .Net, опрашивающая эту таблицу для составления электронных писем и их отправки через наш почтовый сервер.

Мы обрабатываем до 1000 писем в минуту...

Для Java есть http://java.sun.com/products/javamail/Я использовал его в приложении.Довольно прост в настройке и использовании.

В Ruby это чрезвычайно просто, но я им не пользовался, поэтому ничего не могу сказать о производительности.http://snippets.dzone.com/posts/show/2362

Тем не менее...Я сомневаюсь, что сам PHP будет слишком медленным для отправки почты.Возможно, у вас есть узкое место в вашем приложении?

Просто хотел бы упомянуть, что на моей предыдущей работе мы создали решение для массовой рассылки электронной почты на PHP, которое отлично работало, поэтому я не понимаю, почему вы полностью его исключаете :)

Единственное, что вы могли бы сделать, это сместить фокус вопроса на базовое почтовое программное обеспечение.Например, если бы я хотел отправить массу электронных писем, я бы использовал любой язык, чтобы записать их в формате BSMTP, который по сути выглядит как простые клиентские команды SMTP.Что-то вроде:

MAIL FROM:<me@example.com>
RCPT TO:<you@example.com>
DATA
From: Me <me@example.com>
To: You <you@example.com>
Subject: test email

This is the body of the test email I'm sending
.

Затем я бы передал файлы BSMTP через exim:

cat *.bsmtp | exim -bS

Это по существу устраняет задержку при отправке электронных писем из вашей программы и возлагает нагрузку на exim (который, как MTA, лучше приспособлен для этого).

Как только вы освоите основы, вы сможете изменить массу вещей, чтобы сделать их более эффективными.Например, если ваши электронные письма не настроены, вы можете предварительно оптимизировать их, поместив всех получателей из одного домена в один файл BSMTP:

MAIL FROM:<me@example.com>
RCPT TO:<you@example.com>
RCPT TO:<him@example.com>
RCPT TO:<her@example.com>
RCPT TO:<them@example.com>
DATA
From: Me <me@example.com>
To: Me <me@example.com>
Subject: test email

This is the body of the test email I'm sending
.

Вы также получаете массу возможностей для маневра в том, как оптимизировать сам MTA для отправки почты (например, он будет автоматически обрабатывать параллельные доставки, доставку электронной почты на один и тот же почтовый сервер по одному и тому же TCP-соединению и т. д.).

Что касается выполнения этого в коде, раньше у нас была библиотека Perl, которая помогала нам делать это.По сути, вы передаете ему электронные письма и адреса, и он по мере необходимости отвечает на вызовы на почтовый сервер.Он мог настраивать количество параллельных сеансов, которое он допускал, а также контролировал нагрузку на сервере и снижал скорость, если нагрузка пересекала настраиваемый пользователем порог.

Я использую программу e-Campaign, которая читает файлы CSV.Если вам нужно сделать это программно, вы можете захотеть встроить технику ожидания, чтобы не пытаться отправить 10 000 писем одновременно.С помощью e-Campaign вы можете выбрать, сколько писем отправлять за раз, и установить время перерыва между этими пакетами.Он по-прежнему очень быстр, но не вызывает проблем с перегрузкой сервера.

Существует инструмент командной строки на основе DOS под названием blat, с помощью которого вы можете очень легко загружать и отправлять электронные письма.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top