基于属性发送电子邮件 - Django 1.8

Sending email based on attribute - Django 1.8

我正在尝试将复选框选择从模板传递到电子邮件功能的视图。模板中的每个复选框对应于数据库中的一个类别。

联系人数据库是这样的:

NAME | CATEGORY | EMAIL
john |    man   | john@example.com
sue  |    woman | bob@example.com
spot |    dog   | dog@example.com

我想根据类别向联系人发送电子邮件。表格看起来有点像这样:

Target Audience: men[] women[] dogs[]
Subject: 
Message:

通过选中一个或多个复选框来选择目标受众,然后将此选择列表传递到视图,我可以在视图中将其作为收件人列表通过电子邮件功能传递。我在这里缺少什么步骤?

我有一个表格,我认为它可能有用,但此时我已经筋疲力尽了。

class EmailForm(forms.Form):

    CATEGORY_CHOICES = (
    ...
    )
    subject = forms.CharField(required=True)
    message = forms.CharField(required=True)
    from_email = forms.CharField()
    targetAudience = forms.MultipleChoiceField(choices=CATEGORY_CHOICES,
                                    widget=widgets.CheckboxSelectMultiple())

最终我需要使用复选框在视图中定义 TargetAudience,并执行如下操作。

group = contact.objects.get(category==TargetAudience)

list = group.objects.values_list('email')

`send_mail`(mass mailing up to a few hundred) to this list.

编辑:视图放在一起

def email_test(request):
    if request.method == 'GET':
        form = EmailForm()
    else:
        form = EmailForm(request.POST)
        if form.is_valid():
            subject = form.cleaned_data['subject']
            message = form.cleaned_data['message']
            from_email = form.cleaned_data['from_email']
            targetaudience = form.cleaned_data['targetAudience']
            target_audience = contacts.objects.get(category=targetaudience)
            email_list = target_audience.objects.values_list('email', flat=True)
            send_mail(subject, message, from_email, email_list)

假设 form.cleaned_data['targetAudience'] returns 一个类别列表,您可以这样做:

email_list = Contact.objects.filter(category__in=targetaudience).values_list('email', flat=True)