私のDjangoアプリケーションには10,000人のユーザーがおり、すべて電子メールを使用しています。私はすべての人に1ヶ月に1回、電子メールメッセージを送信したいと考えています。このメッセージには、いくつかのPDF添付ファイルが含まれている可能性があります。Djangoで10,000人のユーザに電子メールを送信するにはどうすればよいですか?
私が試みたのは、EmailMessageオブジェクトを使用してそれらのすべてに電子メールを送信することでした。送信する前に、このEmailMessageのbccコンポーネントにすべてのユーザーの電子メールアドレスを追加します。
recList = []
for recipient in rec:
reci = str.strip(str(recipient))
recList.append(reci)
message = (form.cleaned_data['subject'], form.cleaned_data['message'], '[email protected]', recList)
mail = EmailMessage(form.cleaned_data['subject'], form.cleaned_data['message'], '[email protected]', ['[email protected]'], 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)
しかし、電子メールを送信すると、Djangoは「接続がリセットされました」とメッセージを送信して送信しません。私は、サーバー接続が閉じられていると仮定しています。
Djangoで一斉メールを送信する効率的な方法は何ですか? send_mass_mail()
はもっと効果的でしょうか?
recipient.hasSignedUpForEmailフラグをチェックしていないことに注意してください。また、ユーモアは少なく、なぜ「メッセージ」を作成し、毎回上書きされてループ内にあるのですか? – Spacedman
あなたはhttp://code.google.com/p/django-mailer/を試してみましたか? – Ahsan