django - Django中显示发件人电子邮件的错误
问题描述
我正在尝试查看发送给电子邮件主机的发件人电子邮件。我可以使用环境变量向 email_host_user 发送电子邮件,并允许访问 Yahoo 帐户中不太安全的应用程序。但是,当我执行“from_email”时,我收到一个错误: SMTPSenderRefused--(550, b'Request failed; Mailbox available', 'bill@yahoo.com')--'bill@yahoo.com is just a random sender's电子邮件虽然我无法发送到 email_host。我认为我的views.py肯定有一些问题?感谢您的反馈!
设置.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'))
视图.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')
联系人.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>
解决方案
雅虎不允许您通过未经授权的电子邮件发送电子邮件。您只能使用您的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')
推荐阅读
- java - 想在我的数据库中返回一个 rs.getInt() 值
- bash - symfony server:start 命令抛出错误
- woocommerce - 无法按供应商添加 woocommerce 订单过滤器
- r - 在直方图的背景中添加图像
- java - 无法在 Android 上获得写入权限
- sql - 如何避免多次加入同一张表?
- php - 如何将带有 arc2 的新个人添加到我的 owl 文件中?
- c++ - 将方法应用于以另一个类的对象作为成员的类时出错
- database - 使用 DynamoDB 和 Exactly Once Delivery 进行事件溯源,我应该按 AggregateId 排序吗?
- reactjs - 让消费者呈现提供者的目的是什么?