在Python中通过Outlook回复电子邮件

时间:2016-03-31 13:57:35

标签: python email outlook

我正在尝试回复主题中包含关键字的电子邮件,但我需要通过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()

1 个答案:

答案 0 :(得分:0)

请勿使用Items.GetLast - 不保证会返回上次收到的电子邮件。除非您明确调用Items.Sort,否则Items集合不会以任何特定方式排序。在您的特定情况下,请使用Items.RestrictItems.Find/FindNext根据您的条件查找邮件(未读,主题包含特定字词等)。

要获得回复,请致电MailItem.Reply而不是Application.CreateItem - 它会返回新的MailItem对象。