项目: waynerv/flask-mailman
相关 issue:Please support Non-ASCII mailbox names (RFC 6530) · Issue #38 · waynerv/flask-mailman · GitHub
难度:中等
支持在邮箱地址中使用非 non-ascii 字符,比如类似「hi@亚马逊.中国」这样的邮箱。
PR 需要包含:
- 功能代码
- 测试
- 更新 Changelog
项目: waynerv/flask-mailman
相关 issue:Please support Non-ASCII mailbox names (RFC 6530) · Issue #38 · waynerv/flask-mailman · GitHub
难度:中等
支持在邮箱地址中使用非 non-ascii 字符,比如类似「hi@亚马逊.中国」这样的邮箱。
PR 需要包含:
smtplib
在 3.5 版本后为 sendmail
方法的 mail_options
变量添加了 SMTPUTF8
选项。flask-mailman
在 backends/smtp.py#141
调用这一方法发送邮件时,并未设置 mail_options
,也没有提供设置项,因此在使用非 ASCII 邮箱时,会出现被服务器拒绝的情况。
这里有两种解决方案:
默认采用 SMTPUTF8
。flask-mailman
要求 Python 版本 >= 3.7,因此不存在兼容性问题。
这种方案可能出现的问题:当服务器不支持 SMTPUTF8
时,发送请求将被拒绝,抛出 SMTPNotSupportedError
异常。
SMTPNotSupportedError
,尝试不使用 SMTPUTF8
再次发送。若仍被拒绝则抛出异常。为所有发送邮件的方法/函数添加 mail_options
选项。
参考:
我个人觉得第二种方式影响小一些,把是否使用交给用户来决定。不过具体实现方式的话,创建一个配置变量是不是更好一些?这样不用改动所有方法/函数。
麻烦更新一下文档和 changelog。文档里介绍这个新增加的配置时,可以用设置 SMTPUTF8
作为示例,介绍可以用这个来开启对 non-ASCII 地址的支持。
PR 已合并,感谢!