Как отправить электронное письмо 10000 пользователей в Джанго?
В моем приложении Django 10000 пользователей, и все они имеют электронную почту. Я хотел бы отправлять сообщения электронной почты всем им, скажем, раз в месяц. Это сообщение может иметь некоторые вложения в формате PDF.
Я пытался использовать объект EmailMessage для отправки электронной почты всем им. Я добавляю адреса электронной почты всех пользователей в компонент скрытой копии этого EmailMessage перед отправкой.
recList = []
for recipient in rec:
reci = str.strip(str(recipient))
recList.append(reci)
message = (form.cleaned_data['subject'], form.cleaned_data['message'], 'emailAdmin@yahoo.com', recList)
mail = EmailMessage(form.cleaned_data['subject'], form.cleaned_data['message'], 'email_manager@mysite.org', ['email_list@mysite.org'], recList)
num_attachments = 0
if form.cleaned_data['attachment'] != None:
email_attachment = EmailAttachment(
document_name = form.cleaned_data['attachment'].name,
email_message = email,
document = form.cleaned_data['attachment'],
)
email_attachment.save()
mail.attach_file(settings.MEDIA_ROOT + "/" + email_attachment.document.name)
mail.send(fail_silently=False)
Однако, когда я отправляю электронное письмо, Джанго жалуется, что "Соединение было сброшено" и не отправляет. Я предполагаю, что соединение с сервером было закрыто.
Какой эффективный способ отправить массовую рассылку по электронной почте в Джанго? Было бы send_mass_mail()
быть более эффективным?
3 ответа
Альтернативное предложение: зарегистрируйтесь в почтовой службе и используйте их API, чтобы поддерживать свой список электронной почты и отправлять рассылки. Пара преимуществ этого подхода:
- Они будут обрабатывать любые запросы на отмену подписки, поэтому вам не нужно беспокоиться о добавлении флагов исключения для ваших пользователей, которым не нужны ваши электронные письма.
- Вы с меньшей вероятностью будете получать спам-сообщения из почтовых ящиков своих пользователей или раздражать своего хостинг-провайдера.
Существуют API-оболочки, в том числе для MailChimp и Campaign Monitor. Должно быть достаточно легко добавить хуки для добавления новых пользователей в список рассылки и (если это необходимо) удалить всех пользователей, которые удаляют свои учетные записи.
Вы должны использовать send_mass_mail
так как он не будет закрывать соединение каждый раз. документы
Я также разделил бы сообщения на группы по 100-1000, в зависимости от того, насколько мощен ваш сервер. Причина в том, что вы можете перехватывать ошибки в небольших группах для повторной попытки. Это также приводит к отдельному письму для каждого получателя, что идеально. BCC'тысячи людей не велика.
Я думаю, заголовок BCC электронной почты не может содержать 10000 записей.