首页 > 解决方案 > 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>

标签: djangoemailsendmail

解决方案


雅虎不允许您通过未经授权的电子邮件发送电子邮件。您只能使用您的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')

文档


推荐阅读