0

Iamは、メールをimapサーバーからimap経由でGmailに移動するスクリプトに取り組んでいます。

メールをコピーしてラベルを作成するようになりましたが、Gmailで見ると、日付が元の日付ではなく現在の日付に設定されています。

# fetch header of current mail form old server to get date
result, header = From.uid('fetch', num, '(BODY[HEADER.FIELDS (DATE SUBJECT)])')
headerdic = headerparser.parsestr(header[0][1])

# add dobble qoutes around date
date = '"' + headerdic["Date"] + '"'

# get mail content
result, data = From.uid('fetch', num, '(RFC822)')
mgs = data[0][1]
# append mail to server
To.append(folder_name, None, date, mgs)

私はドキュメントでdobbleqoutesが重要であると読みましたが、違いを生むために継ぎ目はありませんでした。

アップデート

次の解決策が機能することがわかりました

result, header = From.uid('fetch', num, '(BODY[HEADER.FIELDS (DATE SUBJECT)])')
headerdic = headerparser.parsestr(header[0][1])

pz = email.utils.parsedate_tz(headerdic["Date"])
stamp = email.utils.mktime_tz(pz)

date = imaplib.Time2Internaldate(stamp)

result, data = From.uid('fetch', num, '(RFC822)')
mgs = data[0][1]

To.append(folder_name, None, date, mgs)

以前に適切な解決策があった可能性がありますが、メールはまだGmailのゴミ箱に残っていたため、日付を送信しなかった以前のテストを再利用しました。

4

1 に答える 1

0

引用符をエスケープしてみてください。date = '\"' + headerdic["Date"] + '\"'

于 2012-10-25T06:41:17.430 に答える