You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Frappe配置Gmail邮箱收信时触发imaplib.IMAP4.error报错

解决Frappe拉取Gmail邮件时出现imaplib.IMAP4.error: got more than 20480 bytes报错

问题背景

在Frappe项目中配置Gmail账号作为默认收件箱后,新邮件进入时触发pull_from_email_account报错,邮件无法同步到Communication doctype,报错详情如下:

Traceback (most recent call last):
  File "/usr/lib/python3.8/imaplib.py", line 1022, in _command_complete
    typ, data = self._get_tagged_response(tag, expect_bye=logout)
  File "/usr/lib/python3.8/imaplib.py", line 1148, in _get_tagged_response
    self._get_response()
  File "/usr/lib/python3.8/imaplib.py", line 1050, in _get_response
    resp = self._get_line()
  File "/usr/lib/python3.8/imaplib.py", line 1158, in _get_line
    line = self.readline()
  File "/usr/lib/python3.8/imaplib.py", line 316, in readline
    raise self.error("got more than %d bytes" % _MAXLINE)
imaplib.IMAP4.error: got more than 20480 bytes

使用版本:

  • ERPNext 12.30.1
  • Frappe 12.27.0
  • Python 3.8

问题原因

这个报错由Python标准库imaplib的默认行长度限制导致。imaplib默认设置_MAXLINE = 20480(20KB),当拉取的邮件中存在单一行内容超过该长度时,就会触发错误,中断邮件同步流程。

解决方案

方案1:临时修改Python标准库

  1. 找到Python 3.8的imaplib.py文件,路径通常为/usr/lib/python3.8/imaplib.py
  2. 打开文件,找到定义_MAXLINE的代码行(约300行位置):
    _MAXLINE = 20480
    
  3. 将值修改为更大的数值,例如_MAXLINE = 102400(100KB)
  4. 保存文件后,重启Frappe服务

方案2:持久化修改Frappe代码(避免Python升级覆盖)

  1. 打开Frappe中处理邮件拉取的核心文件:frappe/email/doctype/email_account/email_account.py
  2. 在文件开头导入imaplib并动态调整_MAXLINE:
    import imaplib
    # 增大imaplib的行长度限制
    imaplib._MAXLINE = 102400
    
  3. 保存文件后,重启Frappe服务

额外注意事项

  • 确认Gmail账号已开启IMAP访问:登录Gmail → 设置 → 转发和POP/IMAP → 启用IMAP
  • 若账号开启了两步验证,需使用应用专用密码作为Frappe邮箱配置的登录密码
  • 检查Frappe中Email Account的配置参数:
    • IMAP服务器:imap.gmail.com
    • 端口:993
    • 加密方式:SSL

内容的提问来源于stack exchange,提问作者Azad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:25:16