3

我一直觉得 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 服务器。

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

4

2 回答 2

2

在你的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()
于 2013-03-15T05:39:35.070 回答
2

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

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

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

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

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

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

于 2013-03-15T00:57:15.483 回答