【问题标题】:Send HTML email in BizTalk with multiple pdf attachments with SMTP adapter使用 SMTP 适配器在 BizTalk 中发送带有多个 pdf 附件的 HTML 电子邮件
【发布时间】:2011-01-12 08:45:33
【问题描述】:

在 BT2006R2 中,我有一个编排,它接收具有电子邮件属性的 XML,例如:收件人、抄送、主题、htmlbody 的文件位置、带有 pdf 文件的 1..n 文件位置

我希望编排使用 SMTP 适配器发送 1 封电子邮件,其中包含 HTML 电子邮件正文和 1..n 个 pdf 文件作为附件。

如何做到这一点?

【问题讨论】:

    标签: smtp biztalk


    【解决方案1】:

    你真的在这里问了三个单独的问题。

    1. 如何在 BizTalk 中发送 HTML 电子邮件。
    2. 如何在 BizTalk 中向电子邮件添加附件。
    3. 如何将文件动态读入 BizTalk 进程。

    我在下面逐一介绍 - 问题 2 最简单的解决方案实际上避免了处理问题 3。

    希望这将使您走上解决此问题的正确轨道。可悲的是,它太宽泛了,以至于我无法给出一个单一的“这就是你如何回答”,但如果你遇到障碍,请回来发布更多问题。

    如何在 BizTalk 中发送 HTML 电子邮件

    我知道有两种方法可以实现这一点。

    一种是使用 RawString 类并将其直接分配给您的电子邮件正文。这在blog post by Tomas Restropo 中得到了很好的证明。

    第二种方法是使用XSLT Transform Pipeline 组件详解here on MSDN。这允许您指定将普通测试消息正文转换为 HTML 正文的 XSLT 模板。

    我过去使用过这两种方法。每个都有其优点和缺点。模板方法的一个很好的特性是它在运行时可配置性稍强(但如果您设计得很好,则只有一点)。

    如何在 BizTalk 中向电子邮件添加附件

    同样,在 BizTalk 中有两种主要的实现方法。

    第一种方法是使用SMTP.Attachments 上下文属性。在您的业务流程中的消息分配表达式形状中,您有如下代码:

    MessageOut(SMTP.Attachments) = 
        "C:\\Attachments\MyFile.pdf|C:\\Attachments\AnotherFile.pdf";
    

    您只需添加一个文件列表,其中文件路径用竖线分隔。

    这可以很好地满足您的要求 - 这是向电子邮件动态添加附件的最简单方法,并且无需将文件实际加载到 BizTalk 中。

    此外,上面的表达式形状是简单的代码,因此您可以根据需要使上面的内容动态化。

    另一种方法是从 BizTalk 发送多部分消息。根据上下文设置,您可以将所有邮件部分作为附件发送,或将第一部分用作邮件正文。

    创建多部分消息有点复杂,所以我不会深入讨论 - 通常你需要一个帮助类来为你的消息添加部分。

    上下文属性(在消息分配形状中设置)是:

    MessageOut(SMTP.MessagePartsAttachments) = n
    
    // Where n can be one of three values
    0 (same as not set) - Do not attach any biztalk message parts. This is a default setting.
    1 - Attach only biztalk body part
    2 - Attach all parts
    

    如何将文件动态读入 BizTalk 进程

    这又涉及到很多,所以我不会详细介绍。还有其他 SO 问题可以解决这个问题。

    基本上,如果您使用多部分消息,则需要以某种方式将每个消息部分放入 BizTalk。

    你有几个选择:

    • 您将收到的文件的静态列表,每个文件都将发送到接收位置 - 对您不利,因为听起来 PDF 文件可能会更改
    • 主编排读取您的控制文件,然后“编排”子编排的行为
    • 基于代码的解决方案 - 一个 C# 类,它获取您的文件列表并将它们作为消息返回到 BizTalk(或者甚至将它们作为消息部分添加到另一条消息中)
    • 某种自定义适配器解决方案 - 对于您需要的东西来说可能是大材小用。

    【讨论】:

    • 嗨,大卫,你在这里做了一些功课;-) 非常感谢。我已经在互联网上进行了更多阅读,现在我有了一个很好的工作解决方案,方法是使用 html 正文的原始字符串并使用辅助类(作为部分)动态添加附件。
    • @Patrick 很高兴听到你有这个工作。 BT 中的一些“简单”事情,例如发送带有附件的格式良好的电子邮件,可能真的很难开始 - 这几乎就像基本工具不断受到高级功能的影响。
    • 我意识到这是旧的,但是当我昨天整天搜索类似问题时,这个帖子不断出现。我试图将 PDF 附加到电子邮件中,但从未收到 pdf。我不得不将发送管道更改为“通过传输”stackoverflow.com/questions/31550160/…
    • @Ju66ernaut 很高兴你让它工作了——正如你所说,这是一个旧帖子。我已经三年多没有在 BizTalk 上工作了,所以我确信那时已经发生了很多变化。
    猜你喜欢
    • 2020-09-12
    • 2021-09-14
    • 2012-08-11
    • 2011-06-18
    • 2013-10-31
    • 2014-05-12
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多