Ошибка в Django, чтобы показать электронную почту отправителя - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь просмотреть электронную почту отправителя, которая отправляется на хост электронной почты.Я могу отправлять электронные письма на адрес mail_host_user, используя переменные среды, и разрешил доступ к менее защищенным приложениям в учетной записи Yahoo.Однако, когда я выполняю «from_email», я получаю сообщение об ошибке: SMTPSenderRefused - (550, ошибка b'Request; почтовый ящик недоступен »,« 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>

1 Ответ

0 голосов
/ 24 апреля 2019

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')

* Docs 1013 *

...