我正在使用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']
然而,异常'请检查输入的电子邮件是否有效。'永远不会在表单上提出,无论我输入到文本框中。如果我在文本框中输入随机字符,则不会发送任何消息。
如果电子邮件未正确发送,捕获的正确方法是什么?
谢谢。
答案 0 :(得分:0)
尝试仅在clean_recipients中清除收件人电子邮件格式。有片段如何检查电子邮件。 http://djangosnippets.org/snippets/1093/。如果电子邮件格式不匹配,则提出验证错误。
创建电子邮件并从表单的干净方法发送(如果您需要显示发送错误。您需要在发送之前检查表单错误。)或从视图中。
PS。以这种方式获取数据 - self.cleaned_data而不是self.data。