WindowsPCでPythonを通してGmailにアクセスし未読のメールをダウンロードさせる事が出来ます。
ただしgoogleのアカウントの方にも設定が必要になります。
https://myaccount.google.com/security
ここで設定を変更します。
2022年5月以前は「安全性の低いアプリを許可」をすれば良かっただけですが
以降は「2段階認証」をして「アプリパスワード」を入手し、それをPythonに入力しなければならなくなったようです。
まずは「2段階認証」を設定します。
この2段階認証とはGoogleにログインする度にスマホへSNSメッセージでGoogle確認コードが送られてくるので、それを入力する必要になるシステムです。
なのでスマホの電話番号を登録する必要があります。
スマホが無い人はスマホを入手してから試してください。
2段階認証が設定できたらアプリパスワードを取得します。
「アプリ パスワードを生成するアプリとデバイスを選択してください。」とされる文字の下にある「アプリを選択」のプルダウンメニューから「メール」を
「デバイスを選択」のプルダウンメニューから「Windows パソコン」を選択し、右下にある生成ボタンを押します。
そうするとアプリ パスワードが作られるので、これを使ってGmailを取得する時のパスワードとして利用します。
PythonでGmailに来たメールを読み込んで.emlファイルにしてダウンロードする方法
import imaplib import email import sys, codecs from email.header import decode_header #----------------------------------- UserName="****@gmail.com" AppPass="******************" LabelName='***/***' #----------------------------------- def get_content(msg): charset = msg.get_content_charset() payload = msg.get_payload(decode=True) try: if payload: if charset: return payload.decode(charset) else: return payload.decode() else: return "" except: return payload # デコードできない場合は生データにフォールバック #----------------------------------- gmail = imaplib.IMAP4_SSL("imap.gmail.com",'993') gmail.login(UserName ,AppPass) gmail.select("Notes") gmail.select(LabelName) typ, data = gmail.search(None, "(UNSEEN)") #typ, data = gmail.search(None, "(ALL)") print("メール読み込み開始") i=0 #取得したメール一覧の処理 for num in data[0].split(): try: typ, d = gmail.fetch(num, '(RFC822)') msg = email.message_from_bytes(d[0][1]) header = decode_header(msg.get('Subject')) msg_subject = header[0][0] msg_encoding = header[0][1] or 'ISO-2022-JP' try: fr=str(msg_subject.decode(msg_encoding)) except: fr='gmail'+str(i) pass fr=fr.replace('$','$') fr=fr.replace('.','.') fr=fr.replace('<','<') fr=fr.replace('>','>') fr=fr.replace('@','@') fr=fr.replace('%','%') fr=fr.replace(':',':') fr=fr.replace('?','?') fr=fr.replace('|','|') fr=fr.replace('"','') fr=fr.replace("'",'') fr=fr.replace(' ','_') fr=fr.replace('/','/') fr=fr.replace('*','*') fr=fr.replace('+','+') fr=fr.replace('-','ー') fr=fr.replace('\\','¥') fr=fr.replace('\r\n','') fr=fr.replace('\n','') #print(str(i+1)+"個目 "+fr) #print(fr) #exit() f=codecs.open(Path+fr+str(i+1)+".eml","w","utf-8") print(get_content(msg)) f.write(get_content(msg)) f.close() i=i+1 #break except: i=i+1 pass #終了処理 gmail.close() gmail.logout()
UserNameにGmailのアドレスを入力
AppPassにアプリパスワードを入力します。
LabelNameにはGmailの中から取得したいラベルの物を指定します。
コメント
voluptatibus qui sequi cum ipsam aut maxime eveniet esse minus atque sed sint quaerat voluptatem ab earum. ipsum exercitationem laboriosam sed possimus unde eos sed.