我已经使用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
答案 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,以确保您获得发件人的电子邮件地址。