' FROM_EMAIL'没有显示' send_mail' SMTP

时间:2016-05-18 23:25:56

标签: django email sendmail

我已经使用gmail设置了smtp。当我使用send_mail时,收到电子邮件的帐户中没有显示来自电子邮件。

Django settings.py

# DEFAULT_FROM_EMAIL = 'sendTo@gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'sendTo@gmail.com'
EMAIL_HOST_PASSWORD = '**********'
EMAIL_USE_TLS = True

使用

$ python manage.py shell

我发送邮件如下,

>>> from django.core.mail import send_mail
>>> send_mail('subject is', 'message is and is not 12342', 'fromEmail@gmail.com', ['sendTo@gmail.com'])
1
>>>

我在我的Gmail帐户中收到此电子邮件(这与用于smtp的gmail帐户相同),但是来自电子邮件的电子邮件显示为sendTo@gmail.com,应该是fromEmail@gmail.com

2 个答案:

答案 0 :(得分:3)

当您通过Google的SMTP服务器发送电子邮件时,您无法更改来自电子邮件的字段。它使用您为身份验证提供的相同地址。

如果要更改它,则必须使用自己的邮件服务器或可用的众多邮件api /服务器之一。想到了Sendgrid,MailGun等。

答案 1 :(得分:1)

我使用此视图解决了问题:

def contact(request):
    form = ContactForm(data=request.POST or None)

    if form.is_valid(): 
        subject = form.cleaned_data['sujet']
        message = form.cleaned_data['message']
        sender = form.cleaned_data['envoyeur']

        msg_mail = str(message) + " " + str(sender)

        send_mail(sujet, msg_mail, sender, ['corbin.julien@gmail.com'], fail_silently=False)

    return render(request, 'blog/contact.html', locals())

我实际上是将发件人的电子邮件附加到邮件中。你甚至可以从send_mail中删除sender参数。您只需要强制使用您的EmailField,以确保您获得发件人的电子邮件地址。