'from_email' 不显示 'send_mail' smtp

'from_email' not showing with 'send_mail' smtp

我已经用 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

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

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

我使用这个视图解决了问题:

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 中删除发件人参数。您只需将 EmailField 设置为必填项,以确保您将获得发件人的电子邮件地址。