Как правильно проверить EmailMessage для правильных адресов электронной почты получателей? - PullRequest
1 голос
/ 25 декабря 2011

Я разрабатываю приложение с помощью Django. В forms.py , где хранятся классы для моих форм, я написал чистую функцию для проверки того, что все электронные письма, введенные в текстовое поле, соответствуют правильному формату (person@site.com).

В этой чистой функции я создаю сообщение электронной почты с объектом 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'] 

Однако, исключение 'Пожалуйста, проверьте правильность введенных писем.' никогда не появляется в форме независимо от того, что я ввел в текстовое поле. Если я введу случайные символы в текстовое поле, просто сообщение не будет отправлено.

Как правильно перехватить письмо, если оно не было отправлено?

Спасибо.

1 Ответ

0 голосов
/ 25 декабря 2011

Попробуйте очистить формат писем получателей только в clean_recipients. Есть фрагмент, как проверить электронную почту. http://djangosnippets.org/snippets/1093/. Поднять ошибку проверки, если формат электронной почты не совпадает.

Создайте электронное письмо и отправьте его из чистого метода формы (если вам нужно показать ошибки отправки. Перед отправкой вам потребуется проверить ошибки формы) или из представления.

PS. получить ваши данные таким образом - self.cleaned_data вместо self.data.

...