Django send_mail поле "to_email" - PullRequest
       8

Django send_mail поле "to_email"

1 голос
/ 06 июня 2019

У меня проблемы с получением поля to_email для получателя.

Использование Django 2.1 и отправка автоматического электронного письма после входа пользователя на определенную страницу.

Сейчас электронное письмо отправляется на reciever@gmail.com, что явно неверно.

Необходимо отправить на любой адрес электронной почты, который был введен в форму.

Я пытался перейти на to_email= request.POST['email'] и to_email = form.cleaned_data['email'], но они не работают.

to_email = form.cleaned_data['email'] выдает ошибку

TypeError at /users/list "to" argument must be a list or tuple

Затем изменив его на

to_email = form.cleaned_data['email',]

выдает ошибку

KeyError at /users/list ('email',)

Может кто-нибудь мне помочь?

views.py

def list_view(request):
    if request.method == 'POST':
        form = ListForm(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, f"signed up!")
            subject = "Yay."
            html_message = render_to_string('mail/mail_template.html', {'context': 'values'})
            plain_message = strip_tags(html_message)
            from_email = settings.EMAIL_HOST_USER
            to_email = ['receiver@gmail.com',]
            html_message.content_subtype = "html"
            send_mail( subject, plain_message, from_email, to_email, html_message=html_message )
            return redirect('landing')

forms.py

class ListForm(forms.ModelForm):
    email = forms.EmailField(required=True)


class Meta:
    model = List
    fields = ['email']

1 Ответ

2 голосов
/ 06 июня 2019

Ошибка говорит вам точно, что не так: "to" argument must be a list or tuple.Итак, поместите его в список или кортеж.

to_email = (form.cleaned_data['email'],)
...