【问题标题】:sending email django with postfix (without an explicit postfix server)使用后缀发送电子邮件 django(没有明确的后缀服务器)
【发布时间】:2011-12-01 05:25:38
【问题描述】:

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

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

sendmail recipient@example.com
my message body
^D

这将向receiver@example.com 发送一条消息。我不需要显式启动 postfix 服务器。

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

EMAIL_HOST = 'localhost'

settings.py 然后手动做一个

postfix start

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

谢谢 -S

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

【问题讨论】:

    标签: python django email postfix-mta mta


    【解决方案1】:

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

    【讨论】:

    • 设置后缀服务器非常简单(sudo postfix start),所以我想我应该硬着头皮去做。我只是好奇 postfix sendmail 库在这些其他环境中是如何工作的,即使没有明确的 postfix 进程在运行。
    【解决方案2】:

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

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

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

    EMAIL_PORT = 1025
    

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

    这里是Django doc with more info on email testing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多