Odoo:如何处理会话中附带的winmail.dat?

时间:2016-08-17 13:46:48

标签: python odoo tnef winmail.dat

我们有一些客户使用Microsoft Outlook发送附件。但是在odoo中我们只看到winmail.dat个文件(虽然邮件客户端的一切看起来都不错)。

有没有办法强迫odoo公​​开winmail.dat内容?

1 个答案:

答案 0 :(得分:2)

问题是Microsoft Outlook使用Transport Neutral Encapsulation Format并将所有附件打包在一个文件中。

tnef格式有一个很好的python解析器 - 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

您可以找到有关如何执行自定义模块here的更多信息。