'ascii' codec can't encode characters in position 205: ordinal not in range(128)
-
本想要个思路,没想到Shelly这样热心,我就细致地说说,也不枉费Shelly一番热情。
安装email_purchase模块以后,在“采购订单“的Form中,就会在右侧动作栏中出现"Send by Email"项,按下就会提示一般发邮件要提示的东西(To: XXX, Subject : XXX, Message: XXX)(见附件:Send purchase order-s by Email.png)。我确认一定出现如题所示的错误的情况是:To : XXX 这里系统会取出名字连同email address构成这样的格式(很多email系统都如此) “To: 史玉柱<[email protected]>”, 只要 “史玉柱”这里出现中文就会出现标题所示错误。错误会在 “菜单-》系统设置-》设置-》Email Server->Message Queue以一条记录出现,Message Status 会显示error, doule click后,在error tab中显示标题所示错误信息(见附件)。整个操作过程没有任何异常提示,如果"史玉柱"那里是英文或删掉的话,则不会出错。email_sales,email_account 同样问题。
与此有关的是 addons/email_purchase/wizard/wizard_send_email.py 和 addons/smtpclient/smtpclient.py
我怀疑问题出在 smtpclient.py 的 _check_queue 里面。
Chip -
- 照Shelly的方法是可以解决问题的!
2. Shelly 看贴不仔细: 即使SMTP协议不支持"史玉柱 <[email protected]>" 这种格式,只要把“史玉柱“这里换成字母(utf-8?),比如“shiyuzhu", 就可以发走的。
3. 我怀疑 smtpclient.370行:
self.smtpServer[email.server_id.id].sendmail(str(email.server_id.email), email.to, tools.ustr(email.serialized_message)) 这里的smtplib里的sendmail中的变量to 不支持中文(Unicode?)
4. 不知何故,我这里SMTP Server 发邮件特别费劲,好几个SMTP server都是这样。老是在那里"Queued"。如果没有改善,发邮件的功能就没法用了。
- 照Shelly的方法是可以解决问题的!
-
我是说推荐 在 TO: 后面直接使用Email , 这样也可以减少不必要的耗用.或者有很多写 得差的 SMTP server 不支持的.
至于 地址的 nickname + <email address> 应该是有相关的 RFC文档的.. 不过,我暂时没有时间去查询提供.你可以检索一下.
给你一个 邮件的原码的 FROM TO 部分..你应该就知道 如何处理 Unicode 的 邮件nickname 了... 应该是需要处理你的 smtpclient 模块. 或者你的 email_purchase 模块.处理相关的 发件人,收件人 数据.<br />......<br />From: "=?gbk?B?zNrRttPKz+S53MDt1LEAIj0/Z2JrP0I/AD89IiAAPA==?=" <[email protected]> #<-----这里是 发件人:腾讯邮箱管理员 <[email protected]><br />To: [email protected]<br />......<br />