Теперь иногда вложение представляет собой электронное письмо с вложением. Я не знаю, как получить вложение к прикрепленному сообщению.
Это мой код:
Код: Выделить всё
from O365 import Account, Message
import O365
import uuid
class Mail:
def __init__(self):
self.credentials = ('xxx', 'xxx')
self.account = Account(self.credentials, auth_flow_type='credentials', tenant_id='xxx')
if self.account.authenticate():
print('Authenticated!')
self.mailbox = self.account.mailbox(resource='ais@bmodesto.com')
#self.root_folder = my_drive.get_root_folder()
self.inbox = self.mailbox.get_folder(folder_name='Afgehandeld')
self.afgehandeld = self.mailbox.get_folder(folder_name='Afgehandeld2')
def GetAttachmentFromMessage( self, message ):
print('getting attachment from message')
item = None
if message.has_attachments:
message.attachments.download_attachments()
attachments = message.attachments
if 'Original Message Attached' in message.body:
print('LET OP, message is bijlage!')
for item in attachments:
filename = str(uuid.uuid4())
api = item.to_api_data()
print(api)
# this doesnt work
item.save('mail/',filename)
# This doesnt work as its an attachment and not a message
#self.GetAttachmentFromMessage(item)
for item in attachments:
#filename = str(uuid.uuid4())
#filename = item.attachment_name()
item.save('bvg/',)
return item
def ListMessagesFromFolder(self, folder):
messageList = self.inbox.get_messages()
return messageList
def MoveMessage(self, message, folder):
message.move(folder)
if __name__ == "__main__":
mail = Mail()
messages = mail.ListMessagesFromFolder('inbox')
for message in messages:
#print(message)
data = mail.GetAttachmentFromMessage(message)
Если вложение представляет собой сообщение, а не файл, это проблема. Не только потому, что тогда вложение не сохраняется. Но также у меня нет возможности перебирать вложения, чтобы добраться до вложения.
Код: Выделить всё
if 'Original Message Attached' in message.body:
print('LET OP, message is bijlage!')
пробовал:
Код: Выделить всё
item.attachments.download_attachments()
attachments = item.attachments
Также пробовал:
Код: Выделить всё
mail.GetAttachment(attachment.id)
Я застрял, не могу заставить спам-фильтр не пересылать вложение, хотя я все еще пытаюсь. С другой стороны, если отправляющая сторона сделает это, было бы здорово, если бы программа все еще работала.
Я бы предпочел изменить программу, чтобы она могла перебирать вложения, даже если вложение сообщение, которое также имеет вложение.
Вопрос:
Есть ли в пакете O365 способ получить вложение из сообщения, если сообщение прикреплено к сообщению? Или мне нужно перейти на что-то другое?
Подробнее здесь: https://stackoverflow.com/questions/792 ... ed-message
Мобильная версия