1

我想在 Django 中模拟 postfix sendmail 命令,我不需要显式启动 postfix 服务器。

例如,如果我只是在命令行中输入以下内容:

sendmail recipient@example.com
my message body
^D

这将向收件人@example.com 发送一条消息。我不需要明确启动后缀服务器。

似乎其他语言(Perl 和 PHP)具有基本上会复制这一点的绑定。但是,我找不到在 Django/Python 中执行此操作的方法。我得到的最接近的是通过设置

EMAIL_HOST = 'localhost'

settings.py然后手动执行

postfix start

这允许 django send_mail() 命令完成它的工作,但是如果没有在后台运行的 postfix 服务器,是否有某种方法可以实现这一点?其他环境如何成功实现这一目标?

谢谢-S

(不 - 我不想设置第三方 gmail 帐户来执行此操作 - 这是一个老生常谈的问题)。

4

2 回答 2

0

也许会对你有所帮助。没有亲自尝试过,但似乎可以满足您的需求,而无需设置 postfix 服务器所涉及的所有麻烦。

于 2011-10-05T06:28:36.123 回答
0

模拟电子邮件传递的一个简单解决方案是使用 Python 调试服务器。以下以 smtp 模式在端口 1025 上运行它:

python -m smtpd -n -c DebuggingServer localhost:1025

不过,您需要确保您的 Django 测试服务器在 localhost 的端口 1025 上发送电子邮件,因此您可能需要在您的settings.py

EMAIL_PORT = 1025

当它正常工作时,测试服务器只会将您的 Django 发送的所有邮件直接回显到终端,这样您就可以在开发时密切关注输出。我最近在努力让 postfix 在 Ubuntu 机器上工作时使用了它——它只是挂起并破坏了 Django 测试服务器send_mail()

这是Django 文档,其中包含有关电子邮件测试的更多信息

于 2012-06-08T13:43:02.470 回答