Django电子邮件客户端

时间:2013-03-15 00:21:39

标签: django email

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

或者我在这里遗漏了什么。请详细说明......

2 个答案:

答案 0 :(得分:2)

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

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

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

您使用的STMP服务器似乎只限制访问具有完全限定域名(example.com)的其他SMTP服务器,可以通过反向DNS查询进行验证。

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

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

答案 1 :(得分: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()