Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

    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)

    Odoo 开发与实施交流
    2
    9
    10395
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • C
      chipwang 最后由 编辑

      我在调Send by email的时候,邮件老是发不出去,提示这个错误。估计又是哪个函数不支持Unicode(汉字)了。问题是SMTP Server的错误是在Message Queue中给出的,只有这一句话,OpenERP.log中没有记录,没法知道是哪个模块哪行语句出的错误。

      哪位知道这个错误一般是哪个函数给出的。知道了,我就顺藤摸上去。

      Chip


      1 条回复 最后回复 回复 引用 0
      • mrshelly
        mrshelly 最后由 编辑

        源码里没有看到哪里有"Send by email"
        只在 项目 是有 "Warn Partner" 的勾选项...

        1 条回复 最后回复 回复 引用 0
        • C
          chipwang 最后由 编辑

          本想要个思路,没想到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

          1 条回复 最后回复 回复 引用 0
          • mrshelly
            mrshelly 最后由 编辑

            看了, 是 smtpclient 不支持这种 Email 地址格式.

            需要对 To:  FROM: 部分进行

            =?utf-8?B?base64 encode?= <email address> 进行处理.

            1 条回复 最后回复 回复 引用 0
            • mrshelly
              mrshelly 最后由 编辑

              刚看了... SMTP 协议中. 似乎 TO: 部分 只允许标准 的 Email 地址..

              所以修改 to 参数.正则取出 Email 地址. 就OK了.

              1 条回复 最后回复 回复 引用 0
              • C
                chipwang 最后由 编辑

                1. 照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"。如果没有改善,发邮件的功能就没法用了。
                1 条回复 最后回复 回复 引用 0
                • mrshelly
                  mrshelly 最后由 编辑

                  我是说推荐 在 TO: 后面直接使用Email , 这样也可以减少不必要的耗用.或者有很多写 得差的 SMTP server 不支持的.

                  至于 地址的 nickname + <email address> 应该是有相关的 RFC文档的.. 不过,我暂时没有时间去查询提供.你可以检索一下.

                  给你一个 邮件的原码的 FROM TO 部分..你应该就知道 如何处理 Unicode 的 邮件nickname 了... 应该是需要处理你的 smtpclient 模块. 或者你的 email_purchase 模块.处理相关的 发件人,收件人 数据.

                  <br />......<br />From: &quot;=?gbk?B?zNrRttPKz+S53MDt1LEAIj0/Z2JrP0I/AD89IiAAPA==?=&quot; &lt;[email protected]&gt;&nbsp; &nbsp; #&lt;-----这里是 发件人:腾讯邮箱管理员 &lt;[email protected]&gt;<br />To: [email protected]<br />......<br />
                  



                  1 条回复 最后回复 回复 引用 0
                  • mrshelly
                    mrshelly 最后由 编辑

                    所以, 我推荐你 在 调用.sendmail 的时候. 把 email.to 的内容修正一下... 最好不要使用 Quoted Printable 的 Email 地址. 而直接使用 标准的 email 地址格式.

                    我怀疑 你的SMTP server 也是在处理这种不标准的邮件而造成的 发送堵塞...

                    1 条回复 最后回复 回复 引用 0
                    • First post
                      Last post