メイン画像

Pythonでヤフーメールを受信

Pythonでヤフーメールを受信


スクレイピングで確認メールが飛んできてそこからアクセスするときとかに必要だったので、とりあえず受信して最新メール取得するやつだけ作ってみた。
本当はクラスにして送信とかも作っておくといつか使うときが来ると思う。
import os
import sys
import ssl
import imaplib
import email
from email.header import decode_header, make_header

def getSakubunLoginURL():
    ret = ""    #戻り値(ログインURL)
    server = 'imap.mail.yahoo.co.jp'    #yahooメール。

    # メールアドレスとログインパスワード
    usr = 'xxxx@yahoo.co.jp'
    password = 'xxxxx'

    try:
        context = ssl.create_default_context()
        imapclient = imaplib.IMAP4_SSL(server, 993, ssl_context=context)
        imapclient.login(usr,password)
        imapclient.select()
        typ, data = imapclient.search(None, 'all')

        data2 = data[0].split()
        num = data2[len(data2)-1]   #最新のやつだけ抽出
        typ, data = imapclient.fetch(num, '(RFC822)')
        email_message = email.message_from_bytes(data[0][1])
        email_from = str(make_header(decode_header(email_message['From'])))
        subject = str(make_header(decode_header(email_message['Subject'])))
        
    #        msg_encoding = 'iso-2022-jp'
        msg_encoding = 'utf-8'

        if email_message.is_multipart() == False: # シングルパート
            byt  = bytearray(email_message.get_payload(), msg_encoding)
            body = byt.decode(encoding=msg_encoding)
        else:   # マルチパート
            prt  = email_message.get_payload()[0]
            byt  = prt.get_payload(decode=True)
            body = byt.decode(encoding=msg_encoding)
        print('from:', email_from,'  subject:',subject)
        print('------------------------------------------')
        print(body)
        ret = body[body.find("https"):] #本文からURL抽出
        imapclient.close()
        imapclient.logout()
    except Exception as ee:
        sys.stderr.write("*** error ***\n")
        sys.stderr.write(str(ee) + '\n')
    
    return ret

getSakubunLoginURL()​
エンコードをiso-2022-jpでやると0xe3がアスキー文字の規定外になりエラーになってしまうのでutf8でやっとく。
このエラーは実際に見えている文字とコンピューター内部で扱う数値が違うので初心者が良く躓くことがある気がする。

アカウントを作成 して、もっと沢山の記事を読みませんか?


この記事が気に入ったら Sylphy さんを応援しませんか?
メッセージを添えてチップを送ることができます。


この記事にコメントをしてみませんか?


プログラミング、ジャンク品修理、ゲームなどの趣味の部分を主に取り扱っていきます。

おすすめの記事
2024/03/6 23:43 - ショウ(フォロバ100) / お得情報を誰よりも最速でお届け!!
2024/01/15 12:08 - Sylphy
2023/12/22 23:20 - ショウ(フォロバ100) / お得情報を誰よりも最速でお届け!!
2023/12/18 21:45 - ショウ(フォロバ100) / お得情報を誰よりも最速でお届け!!
2023/12/12 22:04 - ショウ(フォロバ100) / お得情報を誰よりも最速でお届け!!