1

Django でアプリケーションを開発しています。フォームのクラスが格納されているforms.pyに、テキスト ボックスに入力されたすべての電子メールが適切な形式 (person@site.com) に従っていることを確認するクリーンな関数を記述しました。

この clean 関数では、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'], 'hi@world.com', recList)
        mail = EmailMessage(self.data['subject'], self.data['message'], 'from@somebody.com', ['email_list@mysite.org'], recList)
        try:
            mail.send(fail_silently=False)
        except Exception:
            raise forms.ValidationError('Please check inputted emails for validity.')
        return self.data['recipients'] 

ただし、「入力したメールの有効性を確認してください」という例外が発生します。テキストボックスに入力した内容に関係なく、フォームで発生することはありません。テキストボックスにランダムな文字を入力すると、メッセージは送信されません。

メールが正しく送信されなかった場合の適切なキャッチ方法は何ですか?

ありがとうございました。

4

1 に答える 1

0

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

電子メールを作成し、フォームの clean メソッド (送信エラーを表示する必要がある場合。送信前にフォーム エラーを確認する必要があります) またはビューから送信します。

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

于 2011-12-25T12:49:53.143 に答える