exchangelib - Как отправить вложение с ответом по электронной почте - PullRequest
1 голос
/ 07 апреля 2019

Я использую exchangelib для подключения к обмену и ответа на электронные письма. Но при отправке ответа он не поддерживает вложения.

Согласно этому ответу Мне нужно «создать обычный элемент сообщения, который имеет заголовок« Re: some subject », содержит вложение и цитирует исходное сообщение, если это необходимо».

но я не уверен, как "процитировать" оригинальное сообщение

Я использую следующий код для ответа:

из пути импорта пути pathlib из exchangelib import Сообщение, Аккаунт, FileAttachment

account = Account(...)
item = ...
file_to_attach = Path('/file/to/attach.txt')
message = Message(
    account=account,
    subject="Re: " + item.subject,
    body="This is reply by code",
    cc_recipients=item.cc_recipients,
    to_recipients=[item.sender],
    in_reply_to=item.id,
    conversation_id=item.conversation_id,
)
with file_to_attach.open('rb') as f:
    content = f.read()
message.attach(FileAttachment(name=file_to_attach.name, content=content))
message.send_and_save()

Он отправляет электронное письмо с вложением, но не сохраняет текст из исходного письма в ответ и выглядит как новое письмо вместо ответа. также не отображается как разговор в gmail

Я могу упустить что-то маленькое здесь подскажите пожалуйста как это исправить

1 Ответ

1 голос
/ 07 апреля 2019

Потратив немного больше времени на поиск решения, я нашел этот ответ в C #, с помощью которого мне удалось найти следующее решение:

attachment = FileAttachment(name=file_name, content=f.read())
reply = item.create_reply("Re: " + item.subject, "THIS IS REPLY FROM CODE" )
msg = reply.save(account.drafts)
msg.attach(attachment)
msg.send()

Надеюсь, что это поможет кому-то еще в поисках решения аналогичной проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...