我想在Django中模拟postfix sendmail命令,我不需要显式启动后缀服务器。
例如,如果我只是在命令行中输入以下内容:
sendmail recipient@example.com
my message body
^D
这将向recipient@example.com发送消息。我不需要明确启动后缀服务器。
似乎其他语言(Perl和PHP)具有基本上会复制它的绑定。但是,我找不到在Django / Python中做到这一点的方法。我得到的最接近的是设置
EMAIL_HOST = 'localhost'
在settings.py
中,然后手动执行
postfix start
这允许django send_mail()命令执行它的操作,但是如果没有在后台运行postfix服务器,有没有办法实现这一点?其他环境如何成功实现这一目标?
由于 -S
(并且不 - 我不想设置第三方gmail帐户来执行此操作 - 这是一个很难解决的问题。)
答案 0 :(得分:0)
也许this会帮助你。没有亲自尝试过,但似乎没有适合您的需求,而没有设置后缀服务器的所有麻烦。
答案 1 :(得分:0)
模拟电子邮件传递的简单解决方案是使用Python调试服务器。以下以smtp模式在端口1025上运行它:
python -m smtpd -n -c DebuggingServer localhost:1025
您需要确保您的Django测试服务器在localhost上的端口1025处发送电子邮件,因此您可能需要在settings.py
:
EMAIL_PORT = 1025
当它正常工作时,测试服务器只会将Django发送的所有邮件直接回显到终端,这样您就可以在开发过程中密切关注输出。我最近在使用Ubuntu盒子时努力使postfix工作时使用了它 - 它只是在send_mail()
挂起并打破了Django测试服务器。