2017-12-26 58 views
0

私はPython win32comを使ってOutlookからの電子メールを解析しています。私はOutlookフォルダから電子メールを取得できますが、電子メールが返信か応答か、転送されたメッセージかどうかを確認することはできません。電子メールが以前のメールの返信かどうかを確認する必要があります元のメール)または電子メールは、転送されたメッセージです。私はOutlookから電子メールを取得するために次のコードを使用しています。電子メールがPython win32comでの返信か応答かを確認してください

import win32com.client 

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") 
inbox=outlook.Folders['[email protected]'].Folders['Inbox'].Folders['abc'] 
messagesReach = inbox.Items 
for message in messagesReach: 
    if message.Unread==True: 
     print(message.body) 
+0

ルック参照。 – Barmar

+0

返信ありがとうございますが、属性のエラーが表示されています – Pranav

+0

あなたは適切な方法でヘッダーを探していないと思います。 – Barmar

答えて

1

こんにちはヘッダがConversationIDmessage.ConversationID として使用することができる `内返信To`ヘッダのhttps://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.mailitem_properties.aspx

+0

あなたはあなたの答えを受け入れることができるので、この質問を見つける人々は答えを見ることができますか? –

+0

コード内のチェック方法を教えてください。 – Barmar

0

あなたは対象の最初の3つの文字を読もうと、それは「再:」持っているかどうかを判断でき - 接頭辞を、したがって、返信です。これはほとんどの場合に当てはまるはずです。

import win32com.client 

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") 
inbox = outlook.Folders["[email protected]"].Folders["Inbox"].Folders["abc"] 
messagesReach = inbox.Items 
for message in messagesReach: 
    if message.Unread == True: 
     if message.Subject[:3] == "Re:": 
      print(message.body) 
+0

返信ありがとうございます。元のメールを見つけることができません。また、送信者が件名に「RE:」と記載していない場合は失敗します。 – Pranav

+0

これは間違いありません。別の方法を見つけられませんでした。応答か応答かを示す 'message'のプロパティはありません。 'Mailitem'の[property list] [1]はその情報を与えることができるプロパティです。 [https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.mailitem_properties.aspx] [1] –

+0

基本的に私は電子メールのチェーンを見つける必要があります。以前の電子メールの返信を会話のように読んでみたいと思っています。たとえば、誰かに何かの承認のためにメールを送りました。返信として私は承認を述べたメールを受け取りました。そして、承認が与えられた元のメールを見つける必要があります。 – Pranav