3

我正在尝试通过 BizTalk SMTP 发送端口发送消息。具体来说,我通过编排的“稍后指定”端口发送消息。我的目标是使用我选择的附件文件名将消息正文附加到已发送的电子邮件中。

但是,无论我尝试什么,附件名称仍然是“body.csv”

我试过了:

  1. 带有单个部分的多部分消息 +MIME.FileName在此部分上设置。
  2. 包含两个部分(均附加)的多部分消息 +MIME.FileName在两个部分上都设置(非正文部分正确具有附件名称,正文部分没有)。
  3. 标准消息+MIME.FileName在消息上设置。

我已经在“仅附加正文部分”和“附加所有部分”的 SMTP 适配器上尝试了所有配置,但没有一个有效。

目前我有“仅附加正文部分”和一些固定文本(在发送端口上配置)用于电子邮件内容。

我读到有些人在过去版本的 BizTalk 中使用了 MIME 编码器管道,但显然这对于​​ SMTP 适配器是不必要的。其他人使用自定义管道组件来设置MIME.FileName我要去的地方,但如果MIME.FileName已经在我的编排中设置,似乎没有必要。

对于这个相对简单的问题,我是否遗漏了一些基本的东西?

4

2 回答 2

3

您可以在消息分配形状内的编排中执行此操作。使用多部分,消息将如下所示:

Message.part(MIME.FileName) = "your file.name";

于 2013-09-11T16:48:46.763 回答
2

第二个假设工作。尝试使用助手的这段代码(对我有用):

public static void SetFileName(string emailMessage,XLANGMessage message)
{
    Byte[] b = GetBytes(emailMessage);
    MemoryStream stream = new MemoryStream(b);
    IStreamFactory factory = new BinaryStreamFactory(stream);
    string partName = FileName + "." + FileType;
    message.AddPart(factory, partName);
    XLANGPart part = message[partName];
    part.SetPartProperty(typeof(MIME.FileName), partName);
}

static byte[] GetBytes(string str)
{
    byte[] bytes = new byte[str.Length * sizeof(char)];
    System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
    return bytes;
}
于 2012-08-16T06:40:53.290 回答