Python 3.x 将邮箱代码从Python2移植到Python3-mbx.add()有问题

Python 3.x 将邮箱代码从Python2移植到Python3-mbx.add()有问题,python-3.x,email,mbox,Python 3.x,Email,Mbox,我有一个简单的电子邮件过滤程序,多年来一直在Python2中令人满意地工作,我正在尝试将其转换为Python3。只要消息中没有“扩展”(即非ASCII)字符,它在Python 3中运行正常,但如果有我对mbx.add()的调用,则会失败,并出现以下错误:- Traceback (most recent call last): File "/home/chris/.mutt/bin/filter.py", line 102, in <module>

我有一个简单的电子邮件过滤程序,多年来一直在Python2中令人满意地工作,我正在尝试将其转换为Python3。只要消息中没有“扩展”(即非ASCII)字符,它在Python 3中运行正常,但如果有我对mbx.add()的调用,则会失败,并出现以下错误:-

    Traceback (most recent call last):
  File "/home/chris/.mutt/bin/filter.py", line 102, in <module>
    mailLib.deliverMboxMsg(dest, msg, log)
  File "/home/chris/.mutt/bin/mailLib.py", line 52, in deliverMboxMsg
    mbx.add(msg)
  File "/usr/lib/python3.8/mailbox.py", line 603, in add
    self._toc[self._next_key] = self._append_message(message)
  File "/usr/lib/python3.8/mailbox.py", line 758, in _append_message
    offsets = self._install_message(message)
  File "/usr/lib/python3.8/mailbox.py", line 830, in _install_message
    self._dump_message(message, self._file, self._mangle_from_)
  File "/usr/lib/python3.8/mailbox.py", line 215, in _dump_message
    gen.flatten(message)
  File "/usr/lib/python3.8/email/generator.py", line 116, in flatten
    self._write(msg)
  File "/usr/lib/python3.8/email/generator.py", line 181, in _write
    self._dispatch(msg)
  File "/usr/lib/python3.8/email/generator.py", line 214, in _dispatch
    meth(msg)
  File "/usr/lib/python3.8/email/generator.py", line 432, in _handle_text
    super(BytesGenerator,self)._handle_text(msg)
  File "/usr/lib/python3.8/email/generator.py", line 249, in _handle_text
    self._write_lines(payload)
  File "/usr/lib/python3.8/email/generator.py", line 155, in _write_lines
    self.write(line)
  File "/usr/lib/python3.8/email/generator.py", line 406, in write
    self._fp.write(s.encode('ascii', 'surrogateescape'))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 30-32: ordinal not in range(128)
然后将其传送到本地mbox文件,其中包含:-

mbx.add(msg)
其中
mbx
mailbox.mbox

那么我应该怎么做才能在Python3中工作呢?我需要在什么地方进行显式的编码和解码吗

mbx.add(msg)