電子メールを送信するDjangoアプリケーションがあります。プロダクションサーバーには電子メールサーバーがありますが、ローカルボックスにはありません。私は電子メールの送信をローカルでテストできるようにしたいと考えています。私はdjangoが電子メールサーバーを介して送信せず、単にファイルやコンソールに出力することができる方法はありますか?電子メールサーバーを使用しない電子メールのテスト
答えて
することはできconfigure your application to use the Console Backend電子メールを送信するために:
はあなたのsettings.py
にこのサーバを使用するためにはDjangoを設定する必要があります。電子メールを送信するのではなく、標準出力に書き込みます。
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
は生産のためにそれを削除することを忘れないでください:
は、この行を含めるために、あなたのsettings.pyを変更
。
まだ、それを開発の設定ファイルに入れ、それを本番に追加しないでください。 – leech
さらに良いことには、[環境変数で行う](http://12factor.net/config)です。 – meshy
['mail_admins'](https://docs.djangoproject.com/en/stable/topics/email/#mail-admins)を使用している場合は、[' ADMINS'](https:// docs .djangoproject.com/ja/stable/ref/settings /#std:setting-ADMINS)を何かに置き換えてください。そうしないと、stdoutには何も印刷されません。 'mail_managers'の場合も同様です。 – Flimm
Pythonには、少しのSMTPサーバーbuilt-inがあります。このコマンドで第2コンソールでそれを起動することができます。
python -m smtpd -n -c DebuggingServer localhost:1025
これは単にコンソールにlocalhost:1025
に送信されたすべてのメールを印刷します。
EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025
電子メールサーバーが起動していないときに電子メールを送信しようとすると、アプリが例外をスローする可能性があります。 'fail_silently = False'は' send_mail'のデフォルトです。 –
ダニエル・ヘッパーの答えは間違いなく正しい質問ですが、私はこの答えが気に入っています。これは、環境に関係なく機能する一般的な解決策だからです。しかし、両方の上にupvotesもちろん、。 – Teekin
電子メールを送信する代わりに一時ファイルに書き込むようにアプリケーションを設定できます(Daniel Hepperの回答と同様)。
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
EMAIL_FILE_PATH = 'tmp/email-messages/'
これは、新しいメッセージを別々のファイルとして保存します。電子メールのヒープを送信し、スクロールバックを使用したくない場合に便利です。
それは実際には知っていると非常に素晴らしいです。ありがとう。 – Teekin
あなたのテストがdjango.test.testcases.TestCaseから拡張されている場合、何もする必要はありません。 DjangoはEmailBackendを "特別な"ものに置き換えます。そして、あなたはこのように送られていただろうかテストすることができます。
def testMethodThatSendAEmail(self):
...
from django.core import mail
object.method_that_send_email(to='[email protected]')
self.assertEqual(len(mail.outbox), 1)
self.assertEqual(mail.outbox[0].to, ['[email protected]'])
...#etc
送信トレイのオブジェクトは、 のpython manage.pyテストが実行されたときに、メールに注入を受ける特殊なオブジェクトです。
このためのクールなアプリはちょうどあなたのsettings.pyファイルに以下を追加caktus https://github.com/caktus/django-email-bandit である:例えば、@ your_email」に転用される電子メールsetttings..Allメールの上に
EMAIL_BACKEND = 'bandit.backends.smtp.HijackSMTPBackend'
BANDIT_EMAIL = '[email protected]'
.COM」
ハッピーコーディング...
これはベンジャミンからの回答について詳しく説明。 postfix、sendmail、eximのようなローカルメールサーバーがない場合、私が電子メールをテストする1つの方法は、python電子メールサーバーを実行することです。あなたは、sudoでポート25でそれを実行し、あるいは単にポート> 1024(予約済みのポート)を使用することができます。
python -m smtpd -n -c DebuggingServer localhost:1025
#sudo python -m smtpd -n -c DebuggingServer localhost:25
現在のDjangoアプリケーションのコードとテストのために、あなたはでこれを含めるために、一時的にsettings.pyを変更することができますbotom:
EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD = 'localhost', 1025, None, None
あなたの電子メールをテストするか、./manageでこれを行うことができます。そのような別の端末ウィンドウでPYシェル:
from django.core.mail import send_mail
send_mail('Subject here', 'Here is the message.', '[email protected]',['[email protected]'], fail_silently=False)
端末にあなたはすべてのものが表示されますので、任意の実際の電子メールを使用する必要はありません:
python manage.py shell
とは、電子メールを送信するために、このコードを貼り付けます。さらなるテストのために、.htmlのような適切なコンテナにそれをダンプすることができます。
- 1. ビルド電子メールサーバー
- 2. Linux電子メールサーバー、新しい電子メールの到着方法について
- 3. Sql Server電子メールサーバー
- 4. Junit/other - 電子メールのテスト
- 5. HTML電子メールのボタンを電子メールのフォームとして
- 6. 企業の電子メールからイントラネット上に展開されたメールサーバーへの電子メールの送信
- 7. 電子メールで
- 8. は、電子メール
- 9. Apache Commonsの電子メールライブラリを使用してJavaで電子メールを送信
- 10. devise:電子メールを要求しない
- 11. EWS Exchangeを使用して電子メールを作成し、別の電子メールを添付してください。
- 12. Java Webアプリケーションの電子メールサーバー機能
- 13. 電子メールのデータタイプ
- 14. PHP電子メールIBM電子メールのみの検証(ワールドワイド)
- 15. HTML電子メール - 背景イメージの使用
- 16. Sharekitで電子メールがポップアップしない
- 17. 電子メールをパイプして
- 18. Rails電子メール - 電子メールに改行が表示されない
- 19. 変更変更電子メールで電子メールが更新されない
- 20. CPanelを使用しない電子メール配管
- 21. C++電子メール/ SMTP
- 22. 電子メール/ MIMEパーサー
- 23. SMTP電子メールVB.NET
- 24. 電子メール通知
- 25. ワークフロー電子メールSAP
- 26. サムスンのネイティブ電子メールアプリケーションでHTMLコンテンツの電子メールが機能しない
- 27. springMVC + thymleafが使用templateResolverは、電子メール
- 28. Jenkins電子メール設定 - 電子メール設定のテストは成功しましたが、電子メールはユーザーが受信しません
- 29. 電子メール本文を電子メールから抽出する - テキスト解析用
- 30. 電子メールのバウンスをキャッチ
あなたのローカルボックスのオペレーティングシステムはここで知っておくと便利かもしれません...あなたは実際にボックスにメールサーバーを必要とせず、SMTPポート経由で電子メールサーバーへのネットワーク接続が必要です...と可能なユーザー/パスワード。 – Spacedman
[電子メールを送信するアプリケーションをテストするためのダミーSMTPサーバー]の複製可能性(http://stackoverflow.com/questions/1006650/dummy-smtp-server-for-testing-apps-that-send-email) –