как я могу ответить на электронную почту Outlook, используя python для того же отправителя, используя приведенный ниже код?

Я пытаюсь ответить на электронную почту 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()  

person Venkatesh Kumar M    schedule 16.11.2016    source источник


Ответы (3)


Ответ представляет собой элемент MailItem, возвращаемый функцией answer(). Итак, попробуйте следующее:

reply = message.Reply() 
reply.Body = "shortly will be processed!!!" 
reply.Send() 
person Oliver    schedule 17.11.2016
comment
Спасибо, это сработало без ошибок, но он отвечает, не отражая предыдущие разговоры, я имею в виду, ответное сообщение должно быть прикреплено к письму, которое я получил, прежде чем ответить. - person Venkatesh Kumar M; 17.11.2016
comment
Я никогда не видел, чтобы Outlook делал это, нажимая ответ, поэтому COM-сторона тоже этого не делала. Если только вы не имеете в виду, что текст исходного письма должен появиться в ответе. У вас есть исходное сообщение, поэтому вы можете легко добавить его к ответу в качестве вложения или скопировать его текст и информацию заголовка в электронное письмо. В любом случае это выходит за рамки исходного вопроса, поэтому вы должны пометить его как ответ, попробовать то, что я предложил, и опубликовать новый вопрос, если вы не можете получить то, что хотите. - person Oliver; 17.11.2016

продолжая ответ выше

ответить всем:

`rplyall=message.ReplyAll()`

чтобы отразить предыдущие разговоры:

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

`rplyall.Send()`
person Akhil    schedule 17.09.2019

Поскольку MailItem.Body является строкой, и ее нельзя вызывать. Справочный документ Я думаю, что правильный код в @Ахил ответит

    rplyall.Body = "your message here" + rplyall.Body
    rplyall.Send()
person KevinST    schedule 30.07.2021