9

私の Django アプリケーションには 10,000 人のユーザーがいて、全員がメールを使用しています。月に一度、全員に電子メール メッセージを送信したいと思います。このメッセージにはいくつかの PDF ファイルが添付されている可能性があります。

私が試したのは、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'], '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)

しかし、メールを送信すると、Django は「接続がリセットされました」と文句を言い、送信しません。サーバー接続が閉じられたと想定しています。

Djangoで大量の電子メールブラストを送信する効率的な方法は何ですか? send_mass_mail()より効果的でしょうか?

4

3 に答える 3

9

send_mass_mail毎回接続が閉じないので使用してください。ドキュメント

また、サーバーの強力さに応じて、メッセージを約100〜1,000のグループにチャンクします。その理由は、再試行のために小さなグループでエラーをキャッチできるためです。これにより、受信者ごとに個別の電子メールが送信されます。これは理想的です。何千人もの人々をBCCするのは素晴らしいことではありません。

于 2011-12-28T17:43:40.150 に答える
8

別の提案: メーリング サービスにサインアップし、その API を使用してメーリング リストを維持し、メーリングを送信します。このアプローチにはいくつかの利点があります。

  • 彼らはあなたに代わって登録解除リクエストを処理するので、あなたのメールを望まないユーザーに除外フラグを追加することを心配する必要はありません.
  • ユーザーの受信トレイからスパム フィルターで除外されたり、ホスティング プロバイダーを悩ませたりする可能性が低くなります。

MailChimpCampaign Monitorなどで使用できる API ラッパーがあります。新しいユーザーをメーリング リストに追加し、(関連する場合) アカウントを削除したユーザーを削除するためのフックを追加するのはかなり簡単です。

于 2011-12-28T18:00:33.833 に答える
0

メールの BCC ヘッダーに 10000 レコードを含めることはできないと思います。

于 2011-12-28T17:35:27.397 に答える