当在SSIS脚本组件中创建时,变量不包含回车符

当在SSIS脚本组件中创建时,变量不包含回车符

问题描述:

我在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

使用\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"; 
    }