【问题标题】:Forward email using exchangelib使用 exchangelib 转发电子邮件
【发布时间】:2020-01-14 11:31:51
【问题描述】:

我需要构建一个应用程序,它在从交换服务器读取正文(和附件)后简单地转发电子邮件。 该应用程序是在云端构建并用 python 编码的,所以我们认为我们会使用 exchangelib。

由于云架构,我的目标是转发电子邮件以最大限度地减少出口流量。

从 exchangelib source code(从第 778 行开始)我找到以下代码:

    def create_forward(self, subject, body, to_recipients, cc_recipients=None, bcc_recipients=None):
        if not self.account:
            raise ValueError('%s must have an account' % self.__class__.__name__)
        if not self.id:
            raise ValueError('%s must have an ID' % self.__class__.__name__)
        return ForwardItem(
            account=self.account,
            reference_item_id=ReferenceItemId(id=self.id, changekey=self.changekey),
            subject=subject,
            new_body=body,
            to_recipients=to_recipients,
            cc_recipients=cc_recipients,
            bcc_recipients=bcc_recipients,
        )

    def forward(self, subject, body, to_recipients, cc_recipients=None, bcc_recipients=None):
        self.create_forward(
            subject,
            body,
            to_recipients,
            cc_recipients,
            bcc_recipients,
        ).send()

我希望当我使用电子邮件(之前下载的)作为自己调用转发时,转发的消息从服务器而不是来自调用者获取有效负载。

希望我的问题很清楚......

提前致谢

【问题讨论】:

    标签: python email exchange-server email-attachments exchangelib


    【解决方案1】:

    EWS ForwardItem 服务不允许引用服务器端项目内容。您只能通过 HTTP 请求发送转发的内容。

    附件有自己的 ID,因此您可以将原始附件附加到转发项目。

    【讨论】:

    • 我不确定我是否理解正确。您想转发带有附件的现有电子邮件,这是否意味着您必须在应用程序中提取它,然后使用整个有效负载创建一个新电子邮件并发送它?这意味着电子邮件负载从应用程序中退出。对吗?
    • 啊,对不起。 ReferenceItemId只需要转发项的ID和changekey。附件保留在原始项目上。您只需向ForwardItem 提供新主题和额外正文。
    猜你喜欢
    • 2019-08-09
    • 1970-01-01
    • 2017-12-15
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2014-07-05
    • 2011-02-12
    相关资源
    最近更新 更多