web-dev-qa-db-ja.com

Gmailのmessage_idを使用して個別のメールを取得する

メッセージのリストを含むATOMフィードをGmailから取得します。 ATOMフィードの各メッセージエントリには、次のようなリンクが含まれています。

<link rel="alternate" href="https://mail.google.com/mail?account_id=email_address&amp;message_id=big_number&amp;view=conv&amp;extsrc=atom" type="text/html"/>

Gmailからそのメッセージを1つだけ取得する方法はありますか?明らかなことを試した

https://mail.google.com/mail?account_id=email_address&amp;message_id=big_number&amp;view=conv&amp;extsrc=atomは、ログインへのリダイレクトを返すだけです。

私も試してみました:https://email_address:[email protected]/mail?account_id=email_address&amp;message_id=big_number&amp;view=conv&amp;extsrc=atomが、禁止された403を返します。

次に、 OpenPop(Pop3クライアント) を使用してメッセージを取得しようとしました。ただし、GetMessageUids()は空のリストを返します。

理想的にはhttpsを使用してGmailから特定のメールを取得する方法はありますか:上記で試したように、そうでない場合はpop3を使用して?すでにGmailからすべてのメールを取得するpop3クライアントを持っているので、それを妨げたくありません。

1
Jimmy

OpenPopを使用してメッセージ全体を取得することができます。 OpenPopが到達する前に別のpop3クライアントが既にダウンロードしている場合、メッセージを「見逃す」ことがあります(そのため、GetMessageUids()が0を返すのを見ました-段階的にデバッグしていました)。これを回避するには、Pop3Client.Authenticate()でユーザー名の前に「recent:」を付けます。これにより、過去30日間に受信したすべてのメッセージがダウンロードされます。ユーザーの長いリストですが、メッセージを見逃すよりはましです。

1
Jimmy