python imaplib UID命令错误:错误[b';无法分析命令';]
我正在尝试使用copy命令复制邮件python imaplib UID命令错误:错误[b';无法分析命令';],python,imaplib,Python,Imaplib,我正在尝试使用copy命令复制邮件 imapper.copy(email.uid, 'TEST') email.uid=本例中的uid 1069 TEST=邮件应该在其中的映射 这是我的复制功能: def copy(self, uid, to): #typ, content = self._mailer.copy(bytes(uid), to) print (uid) typ, content = self._mailer.uid('copy', bytes(1069)
imapper.copy(email.uid, 'TEST')
email.uid=本例中的uid 1069
TEST=邮件应该在其中的映射
这是我的复制功能:
def copy(self, uid, to):
#typ, content = self._mailer.copy(bytes(uid), to)
print (uid)
typ, content = self._mailer.uid('copy', bytes(1069), 'TEST')
if typ == 'OK':
mail = _parse_email(content, include_raw=include_raw)
return mail
else:
raise Exception("Could not copy email.")
因为我有这个错误,我决定不使用变量,在它工作之前硬编码,然后用变量替换它
typ, content = self._mailer.uid('copy', bytes(1069), 'TEST')
这将返回错误:
UID命令错误:错误[b'无法分析命令']
我添加了bytes(),否则会出现以下错误:
TypeError:无法将int转换为字节
好的,这就是我的解决方案: 我已将字节UID添加到邮件对象,并将复制函数更改为使用此字节UID。这解决了所有问题 我还用我的实现做了一个EasyMap包装叉 因此,通过一项新功能,可以将邮件复制到另一个邮箱
它需要一个字符串。使用str(1069)或“1069”,而不是整数。虽然它们是数字,但协议将它们视为字符串,而不是数字
bytes(1069)
在python中创建了一个由1069个零组成的字节数组,因此您将发送一组空值。这确实是答案。我也用这个答案更新了我的存储库,谢谢!