Odoo: Как обработать winmail.dat прикрепленный в разговорах?

У нас есть клиенты, которые используют Microsoft Outlook для отправки вложений. Однако в odoo мы видим только winmail.dat файлы (пока все выглядит нормально в почтовом клиенте).

Есть ли способ заставить odoo выставить winmail.dat содержание?

1 ответ

Решение

Проблема заключается в том, что Microsoft Outlook использует транспортный нейтральный формат инкапсуляции и упаковывает все вложения в один файл.

Есть хороший анализатор python для формата tnef - tnefparse, Я бы посоветовал вам использовать его и написать простой модуль для расширения mail.thread модель как эта

from tnefparse import TNEF
from openerp.osv import osv

class MailThread(osv.Model):
    _inherit = 'mail.thread'

    def _message_extract_payload(self, message, save_original=False):
        body, attachments = \
            super(MailThread, self)\
                ._message_extract_payload(message, save_original=save_original)

        new_attachments = []
        for name, content in attachments:
            new_attachments.append((name, content))
            if name and name.strip().lower() in ['winmail.dat', 'win.dat']:
                try:
                    winmail = TNEF(content)
                    for attach in winmail.attachments:
                        new_attachments.append((attach.name, attach.data))
                except:
                    # some processing here
                    pass

        return body, new_attachments

Вы можете найти больше информации о том, как сделать пользовательские модули здесь.

Другие вопросы по тегам