【问题标题】:Django email clientDjango 电子邮件客户端
【发布时间】:2013-03-03 14:10:06
【问题描述】:

我一直认为 Django 电子邮件的行为类似于电子邮件客户端,这就是为什么您必须指定 EMAIL_HOST、EMAIL_HOST_PASSWORD 和 EMAIL_HOST_USER 的原因。然后,Django 应用程序的行为就像一个普通的电子邮件客户端,就像 Outlook 或 Apple 邮件一样......

我正在测试一个必须每隔一段时间发送电子邮件的应用程序。但是当我在我的应用程序中执行这些语句时:

subject, from_email, to = 'hello', 'noreply@dummy.com', 'dummy@gmail.com'
text_content = 'This is an important message.'
html_content = '<p>This is an <strong>important</strong> message.</p>'
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.send()

我得到...

Traceback (most recent call last):
File "<console>", line 1, in <module>
.
.
SMTPRecipientsRefused: {'dummy@gmail.com': (504, '5.5.2 <wmsdesktop>: Helo command rejected: need fully-qualified hostname')}

其中 wmsdesktop 是我的开发系统的名称。从这个错误我得到的印象是 Django 应用程序的行为就像一个 smtp 服务器。

或者我在这里遗漏了什么。请对此有所了解...

【问题讨论】:

  • 听起来您的设置有误。
  • 请发布您的设置代码。我认为这是因为您的电子邮件设置

标签: django email


【解决方案1】:

将此代码写入您的 settings.py 文件

 EMAIL_USE_TLS = True
 EMAIL_HOST = 'smtp.gmail.com'
 EMAIL_PORT = 587
 EMAIL_HOST_USER = 'email@gmail.com'
 EMAIL_HOST_PASSWORD = 'email password'

然后在您的 view.py 文件中使用此代码

def sendEmail(request):
    subject, from_email, to = 'Hello', 'noreply@dummy.com', 'dummy@gmail.com'
    text_content = 'Dear Sir,'
    html_content = '<html><body><p>Hello World</p></body></html>'
    msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
    msg.attach_alternative(html_content, "text/html")
    msg.send()

【讨论】:

  • 请在此答案中添加一些字词(即任何未格式化为代码的内容)。
【解决方案2】:

每个电子邮件“客户端”在发送电子邮件时都使用 SMTP。

SMTP 是电子邮件的发送方式。

所以是的,Django 在发送电子邮件时充当 SMTP 客户端,而不是电子邮件(POP 或 IMAP)客户端。

您正在使用的 STMP 服务器似乎将访问限制为仅具有完全限定域名 (example.com) 的其他 SMTP 服务器,该域名可通​​过反向 DNS 查找进行验证。

这是 SMTP 服务器的一种非常常见的做法,因为它有助于消除匿名 SMTP 服务器,这些服务器通常用于发送垃圾邮件。

一般来说,此限制不适用于经过身份验证的用户,尽管这取决于 SMTP 服务器。

【讨论】:

  • 我知道每个电子邮件发件人都使用 smtp。我不明白为什么会出现错误消息。我为我的普通桌面客户端使用相同的 smtp 服务器。
  • 我知道每个电子邮件发件人都使用 smtp。我不明白为什么会出现错误消息。我为我的普通桌面客户端使用相同的 smtp 服务器,并且工作正常。错误消息似乎表明 Django 应用程序正在发出“helo wmsdesktop”,而 wmsdesktop 不是完全限定的主机名。我过去曾经使用另一个位于我本地网络上的电子邮件服务器,但我从未遇到过该服务器的问题。
  • 我的 SMTP 服务器是在 FreeBSD 上运行的 Postfix。
  • 您关于仅对完全合格域名的访问限制的评论让我思考。所以我查看了 Postfix 配置文件:main.cf,其中有一行内容:smtpd_helo_restrictions = 完全限定域名。当我删除那条线时,整个事情都奏效了。所以你的评论很精彩。非常感谢。
猜你喜欢
  • 2022-01-13
  • 2020-01-16
  • 2011-05-04
  • 1970-01-01
  • 2010-11-09
  • 2016-08-18
  • 1970-01-01
  • 2011-03-21
  • 2010-11-15
相关资源
最近更新 更多