2012-08-15 37 views
2

我試圖通過BizTalk SMTP發送端口發送郵件。具體而言,我通過業務流程的「指定後期」端口發送消息。我的目標是將郵件正文添加到發送的電子郵件中,並附帶我選擇的附件文件名。爲什麼我無法通過BizTalk SMTP適配器更改正文部分的附件名稱?

但是,不管我怎麼努力附件名稱仍然是「body.csv」

我曾嘗試:

  1. 與單件多部分消息+在這部分設置MIME.FileName
  2. 兩部分(兩者均附)+兩部分設置MIME.FileName的多部分信息(非正文部分正確具有附件名稱,正文部分沒有)。
  3. 標準消息+在消息上設置MIME.FileName

我已經嘗試過在「僅附加正文部分」和「附加所有部分」並且沒有任何工作的SMTP適配器上的所有配置。

目前我有「僅附加正文部分」和一些固定的文本(在發送端口配置)的電子郵件內容。

我讀過一些在過去的BizTalk版本中使用過MIME編碼器管道,但顯然這對於​​SMTP適配器是不必要的。其他人使用自定義管道組件來設置MIME.FileName這是我的標題,但如果MIME.FileName已在我的編排中設置,則似乎不需要。

我在這裏爲這個相對簡單的問題缺少一些基本的東西嗎?

回答

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; 
} 
+1

是的,我不得不做一些事情幾乎相同,這意味着業務流程中調用我的FF管道,將處理後的值作爲額外的部件,並確保其使用身體(我設置爲通用文本)作爲電子郵件正文(位於SMTP適配器的「撰寫」選項卡中)。雖然從未能夠附加和重命名正文部分,但現在我發送的郵件只能作爲電子郵件發送。 – 2012-08-17 00:50:19

+0

你的代碼是爲了一個編排權,還是它是一個管道? – NealWalters 2017-05-10 13:46:37

2

您可以在消息賦值形狀內的業務流程做到這一點。使用多,消息應該是這樣的:

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

相關問題