跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. 'ascii' codec can't encode characters in position 205: ordinal not in range(128)

'ascii' codec can't encode characters in position 205: ordinal not in range(128)

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
9 帖子 2 发布者 10.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C 离线
    C 离线
    chipwang
    写于 最后由 编辑
    #1

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

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

    Chip


    1 条回复 最后回复
    0
    • mrshellyM 离线
      mrshellyM 离线
      mrshelly
      写于 最后由 编辑
      #2

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

      1 条回复 最后回复
      0
      • C 离线
        C 离线
        chipwang
        写于 最后由 编辑
        #3

        本想要个思路,没想到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
        • mrshellyM 离线
          mrshellyM 离线
          mrshelly
          写于 最后由 编辑
          #4

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

          需要对 To:  FROM: 部分进行

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

          1 条回复 最后回复
          0
          • mrshellyM 离线
            mrshellyM 离线
            mrshelly
            写于 最后由 编辑
            #5

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

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

            1 条回复 最后回复
            0
            • C 离线
              C 离线
              chipwang
              写于 最后由 编辑
              #6
              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
              • mrshellyM 离线
                mrshellyM 离线
                mrshelly
                写于 最后由 编辑
                #7

                我是说推荐 在 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
                • mrshellyM 离线
                  mrshellyM 离线
                  mrshelly
                  写于 最后由 编辑
                  #8

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

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

                  1 条回复 最后回复
                  0

                  • 登录

                  • 没有帐号? 注册

                  • 登录或注册以进行搜索。
                  • 第一个帖子
                    最后一个帖子
                  0
                  • 版块
                  • 标签
                  • 热门
                  • 用户
                  • 群组