首页 文章

Django电子邮件客户端

提问于
浏览
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服务器 .

或者我在这里遗漏了一些东西 . 请详细说明......

2 回答

  • 2

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

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

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

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

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

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

  • 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()
    

相关问题