2017-03-15 34 views
1

我在SSIS中的腳本組件中創建了一個c#變量。我的計劃是將以前的變量值與通過數據流的每行數據加上新行連接起來。然後,我會將該變量的值分配給SSIS變量以在發送郵件任務中使用。當在SSIS腳本組件中創建時,變量不包含回車符

public class ScriptMain : UserComponent 
{ 
    string myString; 

    public override void PostExecute() 
    { 
     base.PostExecute(); 
     this.Variables.emailContent = myString; 
    } 

    public override void Input0_ProcessInputRow(Input0Buffer Row) 
    { 
     myString = myString + Row.column1 + ", " + Row.column2 + Environment.NewLine; 
    } 

} 

我的問題是,當電子郵件被髮送Environment.NewLine似乎並不做任何事情,在SSIS變量emailContent在電子郵件中發送的一條線。

我也嘗試過使用\n但沒有任何運氣。

有趣的是,當我將變量直接寫入文本文件時,新行按預期顯示。

+1

你確定問題在於數據如何a存儲在變量中,而不是電子郵件消息的解釋/顯示方式? (即,如果電子郵件*在某處*被解釋爲HTML,則所有換行符都被視爲空格)。 –

+0

良好的呼叫。當收到電子郵件時發現Outlook沒有純文本。奇怪的是,如果我添加了Environment.NewLine兩次,雖然是一個可怕的解決方案。我所做的是取消發送電子郵件任務並在C#中執行整個操作,並將消息格式化爲HTML。謝謝! – steve

回答

0

使用\r\n

public override void Input0_ProcessInputRow(Input0Buffer Row) 
    { 
     myString = myString + Row.column1 + ", " + Row.column2 + "\r\n"; 
    } 

注意,這些符號是等價的嘗試:

\r : CR 
\n : LF 

也可以嘗試複製反斜槓(因爲您正在使用SSIS變量工作)

public override void Input0_ProcessInputRow(Input0Buffer Row) 
    { 
     myString = myString + Row.column1 + ", " + Row.column2 + "\\r\\n"; 
    }