我总觉得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服务器。
或者我在这里遗漏了什么。请详细说明......
答案 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()