1

ユーザーがメールを入力すると、djangoにメールを1人のユーザーに送信させようとしましたが、失敗し続けます。たとえば、ユーザー 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)のリストを返します。email_addressInvite

これは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 に答える