2011-12-25 4 views
1

私はDjangoでアプリケーションを開発しています。私のフォームのクラスが格納されているforms.pyでは、テキストボックスに入力されたすべての電子メールが適切なフォーマット([email protected])を満たしていることを確認するためのクリーンな関数を書いています。EmailMessageで正しい受信者の電子メールアドレスを確認する適切な方法は何ですか?

は、このクリーン機能では、私はEmailMessageのオブジェクトに電子メールメッセージを構築:

def clean_recipients(self): 
     rec = self.data['recipients'].split(",") 
     recList = [] 
     for recipient in rec: 
      reci = str.strip(str(recipient)) 
      recList.append(reci) 
      message = (self.data['subject'], self.data['message'], '[email protected]', recList) 
     mail = EmailMessage(self.data['subject'], self.data['message'], '[email protected]', ['[email protected]'], recList) 
     try: 
      mail.send(fail_silently=False) 
     except Exception: 
      raise forms.ValidationError('Please check inputted emails for validity.') 
     return self.data['recipients'] 

ただし、例外は、「妥当性、入力されたメールを確認してください。」は、テキストボックスに何を入力したかにかかわらずフォーム上に決して上げられません。テキストボックスにランダムな文字を入力すると、単にメッセージは送信されません。

電子メールが正しく送信されなかった場合、適切な方法はありますか?

ありがとうございます。

+0

http://www.rossp.org/blog/2010/jun/11/django-bounce-postmark/に興味深い情報があります。 – LaundroMat

答えて

0

受信者の電子メールの形式をclean_recipientsでのみ消去するようにしてください。スニペットでメールをチェックする方法があります。 http://djangosnippets.org/snippets/1093/。電子メールの形式が一致しない場合、検証エラーが発生します。

電子メールを作成し、フォームのクリーンメソッドから送信します(送信エラーを表示する必要がある場合は、送信前にフォームエラーをチェックする必要があります)。

PS。この方法でデータを取得する - self.dataの代わりにself.cleaned_data。

関連する問題