3

BizTalk SMTP 送信ポート経由でメッセージを送信しようとしています。具体的には、オーケストレーションの「後で指定」ポートを介してメッセージを送信しています。私の目標は、選択した添付ファイル名を使用して、送信された電子メールにメッセージ本文を添付することです。

しかし、何をやっても添付ファイル名は「body.csv」のままです。

私が試してみました:

  1. 単一のパーツ + このパーツに設定されたマルチパート メッセージMIME.FileName
  2. 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

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 に答える