Send_mail在Django,工程壳,当地的工作,而不是在视图(Send_mail in Dja

2019-08-01 18:27发布

我什至不知道如何调试这样的:我使用send_mail在我的Django的景色之一。 它使用的应用程序时,本地(使用我在生产中使用相同的SMTP设置)正常工作,并在生产中正常工作从shell(再次使用相同的设置)。 但是当我真正在生产中使用的应用程序,该消息不发送。 任何想法如何解决?

我不会在整个视图粘贴,但这里的相关章节。

if request.method == 'POST':
    message, form = decideform(request.POST)
    if form.is_valid():
        invitation.status = form.cleaned_data['status']
        invitation.save()
        message, form = decideform(request.POST)
        update = 'Thank you for updating your status.'

        # Send an email confirming their change
        subject = 'Confirming your RSVP [%s %s]' % (invitation.user.first_name, invitation.user.last_name)
        body = message + ' Remember, the URL to update or change your RSVP is http://the.url%s.' % invitation.get_absolute_url()
        send_mail(subject, body, 'rsvp@mydomain.com', ['rsvp@mydomain.com', invitation.user.email], fail_silently=True)

下面是从我的LOCAL_SETTINGS文件中的相关位,以改变为安全起见突出的详细信息:

EMAIL_HOST = 'mail.mydomain.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'rsvp@mydomain.com'
DEFAULT_FROM_USER = 'rsvp@mydomain.com'
EMAIL_HOST_PASSWORD = 'p4ssw0rd'

Answer 1:

检查权限。 这可能是因为您有权send_mail运行,但应用程序没有。



Answer 2:

我有相同的问题。 3年后:)复制send_mail内嵌的代码固定,但我仍然不知道为什么

        connection = django.core.mail.get_connection(username=None, password=None, fail_silently=False)
        mail = django.core.mail.message.EmailMessage('hello', 'world', 'test@gmail.com', ['test@gmail.com'],                                              connection=connection)
        mail.send()            


Answer 3:

您可以尝试Django的sendgrid代替,这是非常容易configure.Use设置这样的

EMAIL_BACKEND = "sgbackend.SendGridBackend"
SENDGRID_USER = 'xxxxxx'
SENDGRID_PASSWORD = 'xxxxxx'
EMAIL_PORT = 1025


文章来源: Send_mail in Django, works in shell, works locally, not in view