使用 postfix 发送电子邮件 django (没有显式的 postfix 服务器)

发布于 2024-12-08 18:14:13 字数 851 浏览 1 评论 0原文

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

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

sendmail [email protected]
my message body
^D

这将发送一条消息到 [email  ;受保护]。我不需要显式启动 postfix 服务器。

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

EMAIL_HOST = 'localhost'

settings.py 中进行设置,然后手动执行

postfix start

这允许 django send_mail() 命令执行其操作,但是没有某种方法可以在不运行后缀的情况下实现此目的服务器在后台?其他环境如何成功实现这一目标?

谢谢 -S

(不 - 我不想设置第三方 Gmail 帐户来执行此操作 - 这是一个很陈旧的问题)。

I'd like to emulate the postfix sendmail command in Django where I don't need to explicitly start up a postfix server.

For example if I simply enter the following on the command line:

sendmail [email protected]
my message body
^D

This will send a message to [email protected]. I don't need to start up a postfix server explicitly.

It seems like other languages (Perl and PHP) have bindings that will basically replicate this. However, I couldn't find a way to do it in Django/Python. The closest I got was by setting

EMAIL_HOST = 'localhost'

in settings.py and then manually doing a

postfix start

This allows the django send_mail() command to do its thing, but isn't there some way to achieve this without a running postfix server in the background? How do other environments achieve this successfully?

Thanks
-S

(And no - I do not want to set up a third party gmail account to do this - that is a well worn question).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不即不离 2024-12-15 18:14:13

也许这个会对您有所帮助。还没有亲自尝试过,但似乎可以满足您的需求,并且不会遇到设置后缀服务器所涉及的所有麻烦。

Maybe this will help you. Haven't tried it personally but seems like will suit your needs without all the trouble involved in setting a postfix server.

夕嗳→ 2024-12-15 18:14:13

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

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

,您需要确保 Django 测试服务器在本地主机上的端口 1025 上触发电子邮件,因此您可能需要在 settings.py 中进行此操作:

EMAIL_PORT = 1025

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

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

A simple solution to emulate email delivery is with the Python debugging server. The following runs it on port 1025 in smtp mode:

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

You will need to ensure that your Django testing server is firing email at port 1025 on localhost though, so you might need this in your settings.py:

EMAIL_PORT = 1025

When that's working correctly, the testing server will just echo all the mail sent by your Django directly to the terminal so you can keep an eye on the output while in development. I've used this recently when I struggled to get postfix working on an Ubuntu box - it was just hanging and breaking the Django test server on send_mail().

Here is the Django doc with more info on email testing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文