【问题标题】:Django send_mail "to_email" fieldDjango send_mail“to_email”字段
【发布时间】:2019-06-06 20:03:44
【问题描述】:

我无法获取收件人的 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']

【问题讨论】:

  • 不起作用如何?会发生什么?
  • 它将始终向上述电子邮件 ID 发送电子邮件,因为那里是硬编码的 to_email = ['receiver@gmail.com',]
  • @DanielRoseman 我收到form.cleaned_data 不是元组的错误,所以我在['email'], 之后添加了一个逗号,然后我在/users/list ('email',) 收到KeyError
  • 请显示您使用的确切代码和完整的错误。
  • @DanielRoseman 我已经在上面添加了

标签: django django-forms django-views


【解决方案1】:

该错误会告诉您究竟出了什么问题:"to" argument must be a list or tuple。所以,把它放在一个列表或元组中。

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

【讨论】:

    猜你喜欢
    • 2015-11-12
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多