Django通过微软邮件主机SMTPSenderRefused发送电子邮件

时间:2013-07-24 12:28:26

标签: django django-email

这是我的send_email方法

class EmailTemplate(models.Model):
    type = models.PositiveSmallIntegerField(choices=_UserProfile.NOTIFICATIONS_TYPES.get_choices(), unique=True, db_index=True)
    subject = models.CharField(max_length=255)
    body = models.TextField()


    def __unicode__(self):
        return self.get_type_display()


    def send_email(self, context, to_email, use_thread=True):
        template = Template(self.body)
        c = Context(context) 
        html = template.render(c)

        sender = 'Jack <%s>' % settings.DEFAULT_FROM_EMAIL

        email_message = EmailMessage(self.subject, html, sender, to_email)
        email_message.content_subtype = 'html'

        if use_thread:
            t = threading.Thread(target=email_message.send, kwargs={'fail_silently': False})
            t.setDaemon(True)
            t.start()
        else:
            email_message.send()

这些是我的电子邮件设置

DEFAULT_FROM_EMAIL = 'Jack <info@jack.com>'
EMAIL_HOST = 'smtp.live.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'info@jack.com'
EMAIL_HOST_PASSWORD = 'password'

当我尝试发送电子邮件时,我收到以下错误

[Tue Jul 23 22:33:28 2013] [error] Exception in thread Thread-1:
[Tue Jul 23 22:33:28 2013] [error] Traceback (most recent call last):
[Tue Jul 23 22:33:28 2013] [error]   File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
[Tue Jul 23 22:33:28 2013] [error]     self.run()
[Tue Jul 23 22:33:28 2013] [error]   File "/usr/lib/python2.7/threading.py", line 505, in run
[Tue Jul 23 22:33:28 2013] [error]     self.__target(*self.__args, **self.__kwargs)
[Tue Jul 23 22:33:28 2013] [error]   File "/home/jack/sites/universal_tutors/env/lib/python2.7/site-packages/django/core/mail/message.py", line 248, in send
[Tue Jul 23 22:33:28 2013] [error]     return self.get_connection(fail_silently).send_messages([self])
[Tue Jul 23 22:33:28 2013] [error]   File "/home/jack/sites/universal_tutors/env/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 92, in send_messages
[Tue Jul 23 22:33:28 2013] [error]     sent = self._send(message)
[Tue Jul 23 22:33:28 2013] [error]   File "/home/jack/sites/universal_tutors/env/lib/python2.7/site-packages/django/core/mail/backends/smtp.py", line 110, in _send
[Tue Jul 23 22:33:28 2013] [error]     email_message.message().as_string())
[Tue Jul 23 22:33:28 2013] [error]   File "/usr/lib/python2.7/smtplib.py", line 720, in sendmail
[Tue Jul 23 22:33:28 2013] [error]     raise SMTPSenderRefused(code, resp, from_addr)
[Tue Jul 23 22:33:28 2013] [error] SMTPSenderRefused: (501, '5.5.4 Invalid Email address', 'Jack <Jack>')

当我使用gmail smptp设置它的工作,但与微软邮件我得到错误。不知道我犯的是什么错误。

1 个答案:

答案 0 :(得分:1)

这是你的问题:

sender = 'Jack <%s>' % settings.DEFAULT_FROM_EMAIL

因为你有:

DEFAULT_FROM_EMAIL = 'Jack <info@jack.com>'

您最终得到sender

Jack <Jack <info@jack.com>>

这不是有效的电子邮件地址。