RFC 1036、822から:
RFC-822 に準拠するために、メッセージ ID は次の形式にする必要があります: <unique@full_domain_name>
したがって、実際のメッセージ ID は < と > の間にあります。ドメイン部分は ID の一部です。
おそらく文字列を取り除いてから、 <文字で分割し、それが>で終わっていることを確認してから、それを切り落とします。
あなたのデータで良い解決策を見つけることはできません (最後にタイプミスはありますか?) が、次のように見える場合は、次のように解析します
# Note: my list does not end with , ")"]
messageparts = [('1 (BODY[HEADER.FIELDS (MESSAGE-ID)] {78}',
'Message-ID: <actualmessageid@mail.mail.gmail.com>\r\n\r\n')]
for envelope, data in messageparts:
# data: the part with Message-ID in it
# data.strip(): Newlines removed
# .split("<"): Break in 2 parts, left of < and right of <. Removes <
# .rstrip(">") remove > from the end of the line until there is
# no > there anymore;
# "x>>>".rstrip() -> "x"
print "The message ID is: ", data.strip().split("<")[1].rstrip(">")
# Short alternative version:
messageids = [data.strip().split("<")[1].rstrip(">") \
for env,data in messageparts]
print messageids
出力:
The message ID is: actualmessageid@mail.mail.gmail.com
['actualmessageid@mail.mail.gmail.com']
ここでは、「\」を使用していくつかの行を分割し、読みやすくしました。コードは、ヘッダーがすべて有効であることを前提としています。