Python3を使ってgmailを開く方法

Pythonを使ってメールの操作がしたかったので、いろいろと調べてみました。

今回は、gmailをpythonから開く方法をまとめていきたいと思います。

他のメールの開き方も調べてみましたが、gmailを操作するということが簡単でした。

gmailにアクセスする

まずはgmailの方を設定する必要があります。

  • gmailにログイン
  • 右上の歯車のマークをクリック
  • 「設定」をクリック
  • 上の方にある「メール転送とPOP/IMAP」をクリック
  • IMAPアクセス:のIMAPを有効にするをクリック
  • 完了

次にpythonからアクセスして閉じるところからやっていきます。


#-*- coding:utf-8 -*-
import imaplib
import email	#この二つをimport

mail=imaplib.IMAP4_SSL('imap.gmail.com',993) 	#SMTPは993,POPは995
mail.login('操作したいメールアドレス','そのメールアドレスのパスワード')
mail.select('inbox')	#メールボックスの選択


mail.close()
mail.logout()

説明


mail=imaplib.IMAP4_SSL('imap.gmail.com',993) 	#SMTPは993,POPは995

これはhostとポート番号の登録を行います。

gmailの場合はhostは’imap.gmail.com’となりポート番号は’993’か’995’となります。



mail.login('操作したいメールアドレス','そのメールアドレスのパスワード')

メールアドレスとパスワードを入力してログインします。

最初にメールアドレスを、次にパスワードをいれます。

例)mail.login(‘○○××@gmail.com’,’konnitiha’)



mail.select('inbox')	#メールボックスの選択

メールボックスを選択します。

自分で新しいメールボックスを作成していない限りは、’inbox’で取得することができます。



mail.close()
mail.logout()

終了しログアウトします。

これで基本的なオープン、クローズ方法は完了です。

 

メールの内容を操作するための準備

メールの内容の変更などを行う準備をします。

具体的な「本文」「差出人」の取得は別の記事で紹介します。


#-*- coding:utf-8 -*-
import imaplib
import email	#この二つをimport

mail=imaplib.IMAP4_SSL('imap.gmail.com',993) 	#SMTPは993,POPは995
mail.login('操作したいメールアドレス','そのメールアドレスのパスワード')
mail.select('inbox')	#メールボックスの選択

type,data=mail.search(None,'ALL')	#メールボックス内にあるすべてのデータを取得

for i in data[0].split():	#data分繰り返す
 ok,x=mail.fetch(i,'RFC822')	#メールの情報を取得
 ms=email.message_from_string(x[0][1].decode('iso-2022-jp'))	#パースして取得


mail.close()
mail.logout()

説明


type,data=mail.search(None,'ALL')	#メールボックス内にあるすべてのデータを取得

これでメールボックスのデータを取得できます。

typeはそのメールがあると「OK」を返します。


for i in type:
 print(i)

で確認してみてください。

dataはそのメールのidが取得されます。

このdataのままでは処理ができません。



for i in data[0].split():	#data分繰り返す

data[0]だと一つの要素になってしまうので、.split()を使って要素ごとに分けていきます。

例)print(data[0])
だと「b’1 2’」などと出力

for i in data[0].split():
print(i)
だと「b’1’」「b’2’」と出力



 ok,x=mail.fetch(i,'RFC822')

okにはメールが存在する場合には「’OK’」が入ります。

xにはメールの情報が入ります。しかし、printで表示してもらうとわかりますが、人が読める文字列ではありません。



 ms=email.message_from_string(x[0][1].decode('iso-2022-jp'))	#パースして取得

文字列から構造をかえします。

これをすることによってmsにはメールの文字列(人には読めない)と構成のデータが入ります。

準備完了

これで準備は完了しました。

次の記事で具体的な内容の取得を紹介します。

次の記事↓

Pythonでgmailの内容を取得する方法 本文、タイトルを取得する