###前提・実現したいこと
Pythonを使って、Microsoft exchangeのInboxの中のメールを.msgファイルおとして保存することできますか?
imaplibとかを使って、
http://qiita.com/stkdev/items/a44976fb81ae90a66381
この記事を参考にしてやってみましたが、なかなかうまく行きません。
ここに質問したいことを詳細に書いてください
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
###発生している問題・エラーメッセージ
body = "" if msg.is_multipart(): for payload in msg.get_payload(): if payload.get_content_type() == "text/plain": body = payload.get_payload() else: if msg.get_content_type() == "text/plain": body = msg.get_payload() print(body) エラーのメッセージ特にありませんが、 メールの本文なかなか表示できません。 また、検索条件の設定うまく行かないようです。(今のところ、”UNSEEN”しか見れない) ###該当のソースコード import imaplib, re, email, six, dateutil.parser email_default_encoding = 'iso-2022-jp' M = imaplib.IMAP4_SSL("My_Server") M.login("My_Account", "My_PW") M.select("INBOX") typ, data = M.search(None,"(UNSEEN)") for num in data[0].split(): typ, data = M.fetch(num, '(RFC822)') raw_email=data[0][1] M.close() M.logout() msg = email.message_from_string(raw_email.decode('utf-8')) msg_encoding = email.header.decode_header(msg.get('Subject'))[0][1] or 'iso-2022-jp' msg = email.message_from_string(raw_email.decode(msg_encoding)) print(msg.keys()) fromObj = email.header.decode_header(msg.get('From')) addr = "" for f in fromObj: if isinstance(f[0], bytes): addr += f[0].decode(msg_encoding) else: addr += f[0] print(addr) subject = email.header.decode_header(msg.get('Subject')) title = "" for sub in subject: if isinstance(sub[0], bytes): title += sub[0].decode(msg_encoding) else: title += sub[0] print(title) date = dateutil.parser.parse(msg.get('Date')).strftime("%Y/%m/%d %H:%M:%S") print(date) body = "" body = "" if msg.is_multipart(): for payload in msg.get_payload(): if payload.get_content_type() == "text/plain": body = payload.get_payload() else: if msg.get_content_type() == "text/plain": body = msg.get_payload() print(body) ###補足情報(Python3,日本語環境)
ソースコードが大変読みずらいので、「</>」をクリックしてから表示された'''と'''の行の間にソースコードを移動していただけないでしょうか?
あなたの回答
tips
プレビュー