1
我必须通过Python的email.parser
模块获得的电子邮件:如何复制email.message.Message对象?
parser = email.parser.Parser()
msg1 = parser.parse(sys.stdin)
我想创建该对象的副本,但我不知道如何最好地去说。我可以使用copy
模块...
msg2 = copy.deepcopy(msg1)
...但鉴于MIME邮件可能包含部分的有些武断的树,我不知道这是正确的解决与否。我可以序列化和重新分析消息...
msg2 = parser.parse(msg1.as_string())
...但文档表明,as_string
方法可能并不总是做正确的事。我可以创建一个StringIO
对象,并使用generator
...
buf = String()
g = email.generator.Generator(buf)
g.flatten(msg1)
msg2 = parser.parse(buf.getvalue())
...但是,这似乎是一个可怕的很多工作拷贝东西是已经被解析一次。
使用copy
模块看起来是最简单的解决方案,但我不熟悉copy
模块。我做对了吗?