关于方法追加的Python imaplib库的问题

时间:2015-01-22 16:15:49

标签: python datetime imap imaplib

我正在尝试编写一个将主机1连接到account1@host1.com的imapsync软件,并将邮件和文件夹复制到account2@host2.com host2。

假设我已经使用他的UID获取了所选消息:

msg = connection.fetch(idOne, '(RFC822)'))

和msg是一条很好的消息,下面你有我试图附加消息的代码:

date = connection.fetch(idOne, '(INTERNALDATE)')[1][0]
date = date.split("\"")[1]
authconnection1.append(folder, "", date, msg)

错误是:

ValueError: date_time not of a known type

我已经尝试了许多其他可能的解决方案(使用dateutil将日期字符串转换为datetime对象,使用imaplib.Time2Internaldate我得到了与ValueError相同的错误:date_time不是已知类型),但似乎没有人工作。我在网络上搜索过,但似乎没有人有这个问题。

有什么想法吗?我对它感到非常沮丧......

非常感谢

更新

我已经解决了date_time问题,因为"追加" imaplib的方法想要date_time是一个秒的整数,所以要检索我写这段代码的日期:

# Fetch message from host1
msg = connection.fetch(idOne, '(RFC822)')
# retrieve this message internal date
date = connection.fetch(idOne, '(INTERNALDATE)')[1][0].split("\"")[1]
# Cast str date to datetime object
date = parser.parse(date)
# Removes tzinfo
date = date.replace(tzinfo=None)
# Calculates total seconds between today and the message internal date
date = (datetime.datetime.now()-date).total_seconds()
# Makes the append of the message
authconnection1.append(folder, "", date, msg)

但现在这失败了,错误:

TypeError: expected string or buffer

所以问题只会改变......

有什么想法吗?

更新(已解决):

imaplib工作不正常,所以我为正确的日期/时间附加消息做了一个解决方法。这是我的代码,我希望它能帮助每个人:

以正确格式转换日期的功能:

def convertDate(date):
    from time import struct_time
    import datetime
    from dateutil import parser

    date = parser.parse(date)
    date = date.timetuple()
    return date

主要代码:

#Get message
msg = authconnection.fetch(idOne, '(RFC822)')
#Get message date
date = authconnection.fetch(idOne, '(INTERNALDATE)')[1][0].split("\"")[1]
#Apply my function I've written above
date = convertDate(date)
#Append message with right date
authconnection1.append(folder, flags, date, msg[1][0][1])

0 个答案:

没有答案