问题
I have set up smtp with gmail. When I use send_mail the from email is not showing up in the account receiving the email.
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
Using
$ python manage.py shell
I send the mail as follows,
>>> from django.core.mail import send_mail
>>> send_mail('subject is', 'message is and is not 12342', 'fromEmail@gmail.com', ['sendTo@gmail.com'])
1
>>>
I am receiving this email in my gmail account, (which is the same gmail account used for the smtp), but the from email is showing up as the sendTo@gmail.com and should be fromEmail@gmail.com
回答1:
I solved the problem using this view:
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())
I actually append the email of the sender to the message. You could even remove the sender argument from send_mail. You just have to make your EmailField mandatory to make sure you'll get the sender's email address.
回答2:
When you send emails through google's SMTP servers you cannot change the from email field. It uses the same address that you provided for authentication.
If you want to change it you have to use either your own mail server or one of the numerous mail apis/servers available. Sendgrid, MailGun etc come to mind.
来源:https://stackoverflow.com/questions/37311635/from-email-not-showing-with-send-mail-smtp