2016-03-31 271 views
0

私は件名にキーワードを含むメールに返信しようとしていますが、私はすべてOutlookでそれを行う必要があります。私の現在のコードはうまく動作しますが、新しいメッセージを作成するのではなく、直接返信できる方が良いでしょう。返信するPythonでOutlook経由でメールを送信

うまくいけば、これはこれを聞いて、適切な場所です:)

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") 
    o = win32com.client.Dispatch("Outlook.Application") 

    inbox = outlook.GetDefaultFolder(6)  
    def check_mail(): 
     global message 
     messages = inbox.Items 
     message = messages.GetLast() 
     if (message.subject.find('@Bot') != -1 and message.unread and whtlist.find(message.SenderName)!= -1): 
      return 1 
     else: 
      return 0 

    def Read_mail(): 
     global message 
     global ACTIVE 
     body_content = message.body 
     print(bcolors.WARNING+'\n______________________________________________________________________\n'+bcolors.OKGREEN) 
     print (body_content) 
     print(bcolors.WARNING+'\n______________________________________________________________________\n'+bcolors.OKGREEN) 
     for att in message.Attachments: 
      break 
     try: 
      att.SaveAsFile(os.getcwd() + '\\new.xlsx') 
      print(os.getcwd()) 
     except : 
      print(bcolors.WARNING+'No Attachment Found'+bcolors.OKGREEN) 
     message.unread=False 
     Msg = o.CreateItem(0) 
     Msg.To = message.SenderEmailAddress 
     print(bcolors.FAIL+'Reply sent to: {}'.format(message.SenderEmailAddress+bcolors.OKGREEN)) 
     Msg.Subject = 'Autoreply' 
     Msg.Body = 'I see you {}.\n\nTesting\n-Bot'.format(message.SenderName) 
     Msg.Send() 
+0

私は、message.bodyではなくmessage.htmlbodyを、特に書式設定に使用するほうが簡単だと分かりました。 – flyingmeatball

+0

希望します。http://stackoverflow.com/questions/31433633/reply-to-email-using-python-3-4 –

答えて

0

Items.GetLastを使用しないでください - 最後には、電子メールを受信返すことが保証されていません。明示的にItems.Sortを呼び出さない限り、Itemsコレクションは特定の方法でソートされません。具体的には、Items.RestrictまたはItems.Find/FindNextを使用して、条件(未読、件名に特定の単語が含まれているなど)に基づいてメッセージを探します。

返信を受け取るには、Application.CreateItemの代わりにMailItem.Replyと呼び出してください。新しいMailItemオブジェクトが返されます。

+0

ありがとう、私はすでに "message.Reply()"を試みたと確信していますが、それは完全に動作します今:) –

関連する問題