質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
IMAP

IMAP (Internet Message Access Protocol) とは、メールサーバー上の電子メールデータを操作するためのプロトコルです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1836閲覧

Pythonでimaplibを使い最新のメール(Gmail)だけを取得したい

FPC_COMMUNITY

総合スコア19

IMAP

IMAP (Internet Message Access Protocol) とは、メールサーバー上の電子メールデータを操作するためのプロトコルです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/02/13 04:11

#前提・したいこと
Pythonでimaplibライブラリを使用し、Gmailで未読・既読に関わらず最新のメール1件だけを取得したいです。
使用するライブラリは、imaplibとemailです。
とりあえず、今のところ未読既読に関わらず全てのメールを取得するコードは書き終わっていて、それは以下の通りです。

Python

1import imaplib 2import email 3 4mail=imaplib.IMAP4_SSL('imap.gmail.com',993) 5mail.login('メールアドレス','パスワード') 6mail.select('inbox') 7 8type,data=mail.search(None,'ALL') 9 10for i in data[0].split(): 11 ok,x=mail.fetch(i,'RFC822') 12 ms=email.message_from_string(x[0][1].decode('iso-2022-jp')) 13 14 maintext=ms.get_payload() 15 print(maintext) 16 17mail.close() 18mail.logout()

以下のIMAP4のマニュアルを見たのですがよくわからないので、どのようにすれば未読既読に関わらず最新のメール1件だけ取得する方法を教えて頂きたいです。よろしくお願いします。
IMAP4マニュアル

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwbQzhMkhhgEmhU

2019/02/13 21:44

fetchの際に最後の1つだけにするとかではダメですか? 不正確な方法ですけど、gmailだとsortが出来ないという記述も見かけたので、私用かつ重要でないことに使うだけならその程度でいいような気がします。
FPC_COMMUNITY

2019/02/14 02:24

すみません、恥ずかしながら私はそれほど知識がないのでどうすればよいかはわかりませんが、特に重要な目的で使うわけではないので、とにかく最新のメール1件だけを取得できれば大丈夫です。例えば、 2019/1/1 件名:テスト, 内容:あ 2019/1/2 件名:テスト, 内容:い 2019/1/3 件名:テスト, 内容:う と受信していたとします。この時私がしたいのは最新のメールの内容取得なので、取得したいのは「う」になります。 このようなことはできますでしょうか? よろしくお願いします。
wwbQzhMkhhgEmhU

2019/02/14 03:22

??? 私が言った内容は伝わっていますか? searchの際にリストが取れますよね? その後その内容を走査して、全てをfetchしてますよね? リストが日付順にsortされてるとは限りませんが、gmailではsortコマンド使えないって記事があるのでsearchのままになっちゃいますが、全てをfetchじゃなくて、最後のやつだけfetchしてはどうか?と言っています。 なので、必ず「う」なのかは分からない、が答えです。 「う」でありそうな形、です。 あと、一応質問には関係がないので書いてませんが、多分そのプログラムはpayloadが複数のとき、うまく動作しないです。ご参考までに。
FPC_COMMUNITY

2019/02/14 05:00

あっなるほど理解しました。お手数おかけしてすみません...。 1度やってみます!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問