1

一旦用户输入他的电子邮件,我一直试图让 django 向一个用户发送邮件,但它一直失败。例如,用户 A 注册了我的列表,django 给他发了一封邮件。用户 B 注册到我的列表,django 向用户 A 和 B 发送邮件。

我不想要那种过程,我想在每个用户填写他们的电子邮件地址后向他们发送一封邮件。这样当另一个用户注册时,django 就不会向当前用户和已经在数据库中的用户发送相同的邮件。

以下是我的代码:

发送邀请

Subject='Join Me'

message=loader.get_template('letter.txt') 

from_email='test@testing.com'


def invite_me(request):
    if request.method=="POST":
       form=InviteForm(request.POST)
       if form.is_valid():
          form.save()
          #get input data and send email to the user.
          send_mail(Subject,message.render(Context()),from_email,Invite.objects.values_list('email_address', flat=True))
          return HttpResponse('Thanks For Inputting Your Email, Go Check Your Inbox!')
        else:
            return HttpResponse('Invalid Email Address')
      else:
          form=InviteForm()
          return render_to_response('home.html',{'InviteForm':InviteForm},context_instance=RequestContext(request))
        
4

1 回答 1

1

您正在使用: Invite.objects.values_list('email_address', flat=True),它返回数据库中所有 s的所有email_address字段的列表。Invite

这意味着all注册Invite的将收到一封电子邮件。我假设InviteForm是一个ModelForm适合你的Invite对象。ModelForm.save返回新创建的对象,所以你应该这样做:

invite = form.save()
send_mail(Subject,message.render(Context()),from_email,[invite.email_address])

请记住,它send_mail需要一个可迭代的,因此需要在此处使用列表,这是通过使用[invite.email_address]而不是仅invite.email_address.

于 2012-10-20T17:19:50.530 回答