在BT2006R2中,我有一个业务流程,它接收带有电子邮件属性的XML,例如:to,cc,subject,htmlbody的文件位置,1..n带有pdf文件的文件位置
我希望业务流程使用带有HTML电子邮件主体的SMTP适配器和1..n pdf文件作为附件发送1封电子邮件。
如何做到这一点?
答案 0 :(得分:9)
你真的在这里问三个单独的问题。
我在下面解决每个问题 - 问题2的最简单解决方案实际上避免了必须处理问题3.
希望这会让你走上正确的道路来解决这个问题。可悲的是,它是如此广泛以至于我无法给出一个“这就是你如何回答”,但如果你遇到障碍,请回来发布更多问题。
如何在BizTalk中发送HTML电子邮件
我知道有两种方法可以达到这个目的。
一种方法是使用RawString类并将其直接分配给您的电子邮件正文。在blog post by Tomas Restropo中已经很好地证明了这一点。
第二种方法是使用详细here on MSDN的XSLT转换管道组件。这可以通过允许您指定将简单测试邮件正文转换为HTML正文的XSLT模板来实现。
我过去曾使用过这两种方法。每个都有自己的优点和缺点。模板方法的一个很好的特性是它可以稍微更多地配置运行时(但是如果你设计得很好的话,只会稍微有点)。
如何在BizTalk中向电子邮件添加附件
同样,在BizTalk中实现此目的有两种主要方法。
第一种方法是使用SMTP.Attachments
context属性。在您的业务流程中的消息分配表达式形状中,您有以下代码:
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中。
您有几个选择: