我正在尝试查看发送到电子邮件主机的发件人电子邮件。我能够使用环境变量将电子邮件发送到email_host_user,并允许访问Yahoo帐户中不安全的应用程序。但是,当我执行“ from_email”时,收到错误消息:SMTPSenderRefused-(550,b'请求失败;邮箱不可用','bill@yahoo.com')-'bill@yahoo.com只是一个随机发件人电子邮件,尽管我无法发送到email_host。我认为我的views.py必须存在一些问题?感谢您的反馈!
settings.py
EMAIL_HOST='smtp.mail.yahoo.com'
EMAIL_HOST_USER=os.environ.get('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD=os.environ.get('EMAIL_HOST_PASSWORD')
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
print(os.environ.get('EMAIL_HOST_USER'))
print(os.environ.get('EMAIL_HOST_PASSWORD'))
print(os.environ.get('SECRET_KEY'))
views.py
def contact(request):
if request.method=='POST':
message=request.POST.get('message', '')
from_email=request.POST.get('from_email', '')
send_mail('Contact Form',
message,
from_email,
[settings.EMAIL_HOST_USER],
fail_silently=False
)
return render(request, 'first_app/contact.html')
contact.html
<form action="/contact" method="POST">
{% csrf_token %}
<input type="email" name="from_email" placeholder="Your email">
<textarea name="message" placeholder="Message...">
</textarea>
<input type="submit">
</form>
答案 0 :(得分:0)
Yahoo不允许您发送未经授权的电子邮件。您只能使用您的EMAIL_HOST_USER
电子邮件地址发送电子邮件。
您可以做的是将EMAIL_HOST_USER
设置为发件人,并添加一个Reply-To
标头和通过表格提供的电子邮件地址。
您应该为此使用EmailMessage
from django.core.mail import EmailMessage
def contact(request):
if request.method=='POST':
message=request.POST.get('message', '')
from_email=request.POST.get('from_email', '')
email = EmailMessage(
subject='Contact Form',
message=message,
from_email=settings.EMAIL_HOST_USER,
recipient_list=[settings.EMAIL_HOST_USER'],
reply_to=[from_email]
)
email.send(fail_silently=False)
return render(request, 'first_app/contact.html')