我正在尝试使用Python编写一个应用程序,以允许用户将其LISTSERV存档迁移到我们域的Google网上论坛。尝试调用archive.insert(https://developers.google.com/admin-sdk/groups-migration/v1/reference/archive/insert)时,我收到HttpError 500“后端错误”。
我像这样在档案中阅读:
import mailbox
mailbox.mbox('path/to/archive')
Run Code Online (Sandbox Code Playgroud)
遍历mbox对象中的结果消息时,调用.as_string()函数将导致如下所示:
Date: Mon, 10 Feb 2014 10:58:41 -0600
Reply-To: Bob's test list <BOB@LISTSERV.DOMAIN.COM>,
Bob Boberson <bob@EXCHANGE.DOMAIN.COM>
Sender: Bob's test list <BOB@LISTSERV.DOMAIN.COM>
From: Bob Boberson <bob@EXCHANGE.DOMAIN.COM>
Subject: blah blah blah
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="UTF-8"
Message-ID: <6949565692507828.WA.bobexchange.domain.com@listserv.domain.com>
Test message.
Run Code Online (Sandbox Code Playgroud)
这里的一些问题提到通过确保Message-ID的格式正确来避免后端错误。但是,此特定消息的message ['Message-ID']导致<6949565692507828.WA.bobexchange.domain.com@listserv.domain.com>,因此我不确定Message-ID是这里的问题。
我试图像这样调用插入:
stream = StringIO.StringIO()
stream.write(msg.as_string())
media = apiclient.http.MediaIoBaseUpload(stream, mimetype='message/rfc822')
result = migration_api.archive().insert(groupId=group_email, media_body=media).execute()
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?提前致谢 :)
更新
根据Jay在评论中的建议,我已将httplib2.debuglevel设置为1。这是我的日志中尝试迁移同一电子邮件的结果:
send: 'POST /upload/groups/v1/groups/group-name%40lists.domain.com/archive?uploadType=media&alt=json HTTP/1.1\r\nHost: www.googleapis.com\r\ncontent-length: 711\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: google-api-python-client/1.4.0 (gzip)\r\ncontent-type: message/rfc822\r\nauthorization: Bearer …Run Code Online (Sandbox Code Playgroud)