プログラミング初学者です。
プログラミングの勉強として
タイトル通り、pythonを用いてthunderbird内のメールを集計し
特定のアドレスからのメールを抽出、
その件名や本文などをそれぞれエクセルへ定期的に出力するプログラムを作りたいと思っています。
現状、なんとなく調べて見たところ
・import email、import mailboxを使うとメールを読み込めるらしい
・from openpyxl を使うとエクセルが操作できるらしい
程度のことがやんわり分かっています。
しかしながら、
・読み込んだメールをどう操作すればいいのか
・特定のメールに絞り込むにはどうすれば良いのか
・import email、import mailboxを使って読み込んだメールをどうエクセルに出力したらいいのか、などが分かっていません。
曖昧でも、「どんな勉強をすればいいのか」「どう調べればいいのか」だけでも教えていただけると嬉しいです。
よろしくお願い致します。
# -*- coding: utf-8 -*- # (下記すべてバックグラウンドで動いて欲しい) # メールデータを取得 # (15分おきに取得して動作して欲しい) import os import email import mailbox from email.header import decode_header mail_box = mailbox.mbox("メールボックス") for key in mail_box.keys(): a_msg = mail_box.get(key) from_str = a_msg.get_from() print(from_str) usbj = '' for bstr,enc in decode_header(a_msg['Subject']) : if enc == None: usbj += bstr.decode("ascii", "ignore") else: usbj += bstr.decode(enc, "ignore") print("subject: "+usbj) for aa_msg in a_msg.walk(): if not 'text' in aa_msg.get_content_type(): continue #"text"パートでなかったら次のパートへ if aa_msg.get_content_charset() : a_text = aa_msg.get_payload(decode=True).decode(aa_msg.get_content_charset(), "ignore") else: if "charset=shift_jis" in str(aa_msg.get_payload(decode=True)): #ひとまず シフトJISだけ特別対応。 a_text = aa_msg.get_payload(decode=True).decode("cp932", "ignore") else: print ("** Cannot decode.Cannot specify charset ***"+msg.get("From")) print(a_text) continue # ライブラリの設定 from openpyxl import load_workbook import datetime # エクセルを開く(新規作成ではなく展開) filepath = "エクセル" wb = load_workbook(filename=filepath) ws1 = wb['集計'] #ステップ3|集計範囲の取得 startdate=datetime.datetime(int(ws2['B2'].value) , int(ws2['C2'].value) , int(ws2['D2'].value)) enddate=datetime.datetime(int(ws2['B3'].value) , int(ws2['C3'].value) , int(ws2['D3'].value)) #ステップ4|エクセルの最終行や最終列の取得 lastrow1=ws1.max_row lastrow2=ws1.max_row lastcol2=ws1.max_column # 最終行を検索し、その下に新着を追記(重複しないようにするには) # 最終行を検索し、その下に新着を追記(保存して閉じる) ws1.cell(row=i, column=j).value = counter
回答1件
あなたの回答
tips
プレビュー