【问题标题】:Send Email in Django without SMTP server. Like php mail() function does在没有 SMTP 服务器的情况下在 Django 中发送电子邮件。像 php mail() 函数一样
【发布时间】:2011-01-21 01:54:26
【问题描述】:

据我所知,Django 仅支持使用 SMTP 发送邮件。

我想在 Django 中从我的脚本发送电子邮件,但不想设置 SMTP 服务器(这对我来说太复杂了,我是 linux 新手)。

是否可以像在 PHP 中一样在 Django 中发送邮件,而无需提供 SMTP 登录名、密码等?

【问题讨论】:

  • 您的托管服务提供商应该在您的服务器上设置 SMTP。如果您不确定设置,请与他们联系。

标签: python django email


【解决方案1】:

PHP 使用 UNIX 系统上的 sendmail 来发送电子邮件。我猜在你设置系统的某个时候,就是配置了sendmail。

Python 有一个API to sendmail,也许对你有帮助。但是无论如何都会涉及到一个 SMTP 服务器 ;)

【讨论】:

【解决方案2】:

Postfix 和 Exim 旨在处理与将电子邮件从主机转发到世界其他地方相关的所有问题。你的应用程序对他们说 SMTP,他们转身和目的地说 SMTP。但他们非常非常擅长

nothing stopping you 来自对您要发送到的电子邮件地址的 MX 记录进行 DNS 查找,并直接连接到该服务器并向其发送 SMTP。除了应该问你“这真的比 apt-get install exim4 更容易吗?”的唠叨声音之外,什么都没有?

【讨论】:

  • apt-get install 是我可以处理的事情,但是 SASL 配置让我害怕。这么小众的任务似乎很难……
  • 我不确定您为什么认为 SASL 是必要的。将 Postfix 或 Exim 配置为仅接受来自受信任 IP(理想情况下只有 127.0.0.1)的连接,并且完全不进行身份验证。
【解决方案3】:

那么 PHP 是如何做到的呢?用魔法?

如果您没有 SMTP 服务器,请注册一个 GMail 帐户并使用它。

【讨论】:

  • 我不确定 PHP 是如何做到的,但是在安装 PHP 时,我没有在任何地方指定任何 SMTP 身份验证设置。我考虑过 Gmail SMTP,但我的邮件只能来自我的 gmail 帐户。我想在“发件人”字段中使用其他电子邮件。
  • 为什么不试试像 AuthSMTP 这样的 STMP 网关呢?
  • 当然不用外接SMTP服务器也可以发送邮件(SMTP服务器自己是怎么发送的?)所以不是“魔法”。
【解决方案4】:

您的托管服务提供商可能已经为其机器上的所有 PHP 页面设置了主机和任何可能的登录凭据。这将使它看起来不需要任何东西。您的托管服务提供商应该非常乐意为您提供信息。尝试在他们的常见问题解答、论坛和他们发送的任何欢迎电子邮件中搜索 SMTP。如果您的搜索没有找到任何结果,请直接询问他们。

获得信息后,您需要使用这些email settings 将其添加到您的 settings.py 文件中:

# *** settings.py ***
#EMAIL_HOST = 'host here'
#EMAIL_PORT = 587
#EMAIL_HOST_USER = 'your user here'
#EMAIL_HOST_PASSWORD = 'your password'
#EMAIL_USE_TLS = True

取消注释并根据需要使用尽可能多的这些设置。

【讨论】:

  • 我有自己的服务器,所以托管服务提供商帮不了我。谢谢你的回复。
【解决方案5】:

我想,既然您使用的是 Django,那么您对 ​​Python 的理解通常都很好。有一个新的 Python MTA 正在进化,看起来很有前途http://lamsonproject.org/docs/hooking_into_django.html

【讨论】:

    猜你喜欢
    • 2014-08-11
    • 1970-01-01
    • 2014-01-13
    • 2011-06-06
    • 1970-01-01
    • 2011-06-25
    • 2014-10-06
    • 2013-07-22
    • 2015-12-12
    相关资源
    最近更新 更多