如何使用以下代码使用 Python 为同一发件人回复 Outlook 电子邮件?

how i can reply to outlook email using python for the same sender by using below code?

提问人:Venkatesh Kumar M 提问时间:11/16/2016 最后编辑:Venkatesh Kumar M 更新时间:11/18/2023 访问量:9486

问:

我正在尝试像手动一样回复 Outlook 电子邮件,它与以前的对话一起进行。但是下面的代码给出了一些错误:无法发送到收件人地址。我需要知道如何将其发回给我发送电子邮件的人。

import win32com.client, datetime
from datetime import timedelta    

outlook =win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") # to trigger outlook application
inbox = outlook.GetDefaultFolder(6) # 6 is used for the index of the folder
messages = inbox.Items  
message = messages.GetLast()# message is treated as each mail in for loop 
for message in messages:                                          
    if message.Subject=="request": # based on the subject replying to email
        #body_content = message.body  
        message.Reply()  
        message.Body = "shortly will be processed!!!"  
        message.Send()  
电子邮件 python-3.5 pywin32 win32com outlook-2016

评论


答:

0赞 Oliver 11/17/2016 #1

回复是 reply() 返回的 MailItem。所以试试这个:

reply = message.Reply() 
reply.Body = "shortly will be processed!!!" 
reply.Send() 

评论

0赞 Venkatesh Kumar M 11/17/2016
谢谢,它没有任何错误,但它的回复没有反映以前的对话,我的意思是,回复的消息应该附在我回复之前收到的邮件中。
0赞 Oliver 11/17/2016
我从未见过 outlook 通过点击回复来做到这一点,所以 COM 端也不会。除非您的意思是原始电子邮件的文本应该出现在回复中。您拥有原始邮件,因此您可以轻松地将其作为附件添加到回复中,或将其文本和标题信息复制到电子邮件中。无论哪种方式,这都超出了原始问题,因此您应该将其标记为已回答,尝试我的建议,如果您无法获得想要的内容,请发布一个新问题。
0赞 Akhil 9/17/2019 #2

继续上面的答案

全部回复:

`rplyall=message.ReplyAll()`

要反映以前的对话,请执行以下操作:

`rplyall.Body="your message here"+rplyall.Body()`

`rplyall.Send()`
0赞 KevinST 7/30/2021 #3

由于 MailItem.Body 是一个 String,并且它是不可调用的。参考文件我认为@Akhil的正确代码是

    rplyall.Body = "your message here" + rplyall.Body
    rplyall.Send()