Python中IMAP append命令的正确格式?(雅虎邮件)

2024-06-16 14:28:12 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的Python函数适用于outlook、gmail和我的共享宿主exim服务器,但是当通过雅虎它返回以下错误:

append command error: BAD ['[CLIENTBUG] Additional arguments found after last expected argument']. Data: FHDJ4 APPEND inbox.sent "31-Aug-2016 12:30:45 +0100" {155}

作为比较,outlook返回:

^{pr2}$

Gmail返回:

 ('OK', ['[APPENDUID 14 2] (Success)'])

进出口银行回报:

('OK', ['[APPENDUID 1472211409 44] Append completed (0.788 + 0.076 secs).'])

我的函数使用imaplib2,传递给它的参数都是字符串,并且self.用户名发送电子邮件地址是地址@domain.com在

我的职能是:

def send_mail(self, to_addrs, subject, msgtext, verbose=False):
    # build message to send
    msg = email.message.Message()
    msg.set_unixfrom('pymotw')
    msg['From'] = self.username
    msg['To'] = to_addrs
    msg['Subject'] = subject
    msg.set_payload(msgtext)

    if verbose: print("Sending Mail:\n ", msg)

    # connect and send message
    server = self.connect_smtp()
    server.ehlo()
    server.login(self.username, self.password)
    server.sendmail(self.username, to_addrs, str(msg))
    server.quit()
    print("Saving mail to sent")
    sentbox_connection = self.imap_connection
    print(sentbox_connection.select('inbox.sent'))
    print(sentbox_connection.append('inbox.sent', None, imaplib2.Time2Internaldate(time.time()) , str(msg)))

我尝试用以下行生成msg变量:

        msg = "From: %s\r\n" % self.username + "To: %s\r\n" % to_addrs + "Subject: %s\r\n" % subject + "\r\n" + msgtext

并使用“”而不是None来附加消息:

        print(sentbox_connection.append('inbox.sent', None, imaplib2.Time2Internaldate(time.time()) , str(msg)))

你能告诉我我做错了什么吗?或者,如果雅虎有一种特殊的方式来处理append命令,我需要解释一下?在

编辑:为了澄清,发送邮件对所有的smtp服务器都是正常的,但是将发送的邮件附加到收件箱。已发送雅虎失败了


Tags: toselfsendservertimeusernamemsgconnection
1条回答
网友
1楼 · 发布于 2024-06-16 14:28:12

我已经解决了。我注意到短信没有以CRLF结尾。其他邮件服务器正在附加此服务器端以接受命令,雅虎则不接受。现在可以使用下面的方法。在

我已将消息有效载荷行修改为: msg.set_有效载荷(“%s\r\n”%msgtext)#Yahoo对IMAP命令末尾的CRLF要求严格

相关问题 更多 >