
Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn
由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解
本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!
开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号
如果您登录系统碰到问题,请在微信公众号留言:
'ascii' codec can't encode characters in position 205: ordinal not in range(128)
-
我在调Send by email的时候,邮件老是发不出去,提示这个错误。估计又是哪个函数不支持Unicode(汉字)了。问题是SMTP Server的错误是在Message Queue中给出的,只有这一句话,OpenERP.log中没有记录,没法知道是哪个模块哪行语句出的错误。
哪位知道这个错误一般是哪个函数给出的。知道了,我就顺藤摸上去。
Chip -
源码里没有看到哪里有"Send by email"
只在 项目 是有 "Warn Partner" 的勾选项... -
本想要个思路,没想到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 -
看了, 是 smtpclient 不支持这种 Email 地址格式.
需要对 To: FROM: 部分进行
=?utf-8?B?base64 encode?= <email address> 进行处理. -
刚看了... SMTP 协议中. 似乎 TO: 部分 只允许标准 的 Email 地址..
所以修改 to 参数.正则取出 Email 地址. 就OK了. -
- 照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 />
-
所以, 我推荐你 在 调用.sendmail 的时候. 把 email.to 的内容修正一下... 最好不要使用 Quoted Printable 的 Email 地址. 而直接使用 标准的 email 地址格式.
我怀疑 你的SMTP server 也是在处理这种不标准的邮件而造成的 发送堵塞...