在 django 中向新的***域 (TLD) 发送电子邮件
Posted
技术标签:
【中文标题】在 django 中向新的***域 (TLD) 发送电子邮件【英文标题】:Emailing to new top-level domains (TLDs) in django 【发布时间】:2015-07-03 12:16:30 【问题描述】:我需要支持像 joe@netherworld.enterprises(新批准的 TLD 之一)这样的电子邮件地址。我的django版本是1.4.5,python是2.7
我的模型如下所示:
class Invitation(models.Model):
email = models.EmailField(max_length=60, blank=False)
问题是验证器“EmailField”拒绝“企业”,我认为是因为它太长了,并且不以 .com 或类似名称结尾。 (.enterprises 现在是有效的***域。)
如何告诉验证器接受该域? (最好是其他人喜欢它。)
谢谢!
【问题讨论】:
【参考方案1】:我建议您将 EmailField
子类化,并将其 default_validators
集合替换为也支持新*** TLD 的自定义验证器。
默认验证器是django.core.validators.validate_email
,它又指向EmailValidator
的一个实例,显然您也必须对其进行子类化,并提供该子类的一个实例作为您的default_validators
属性中的唯一项EmailField
子类。
您可能想看看 EmailValidator
的较新实现,它不仅支持长度为 2 到 63 个字符的 TLD,还支持 whitelist
参数,允许您在自定义有效域列表中注入.
或者,当然,如果您更喜欢升级到更新的 Django 版本。我不确定何时添加了对更长 TLD 的支持,但我相信您可以通过查看发布日志或浏览源代码来弄清楚这一点。
【讨论】:
以上是关于在 django 中向新的***域 (TLD) 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章