SQL电子邮件格式消失CR LF

时间:2017-05-26 02:03:47

标签: sql-server-2008 sp-send-dbmail

我有一个TSQL脚本,用于选择数据并生成电子邮件。 我的脚本非常复杂,但我把它简化为一个简单的例子来证明我的问题。

简单来说,当我的一个字段超过特定长度(21个字符)时,我插入VAR_Body变量的CR和LF就会丢失。字段中的文本不会被截断。

预期结果

Renewal Date= 23 Jun 2017
Existing Insurer= 1234567890123456789012
Existing Insurer ID= 6007

实际结果

Renewal Date= 23 Jun 2017
Existing Insurer= 1234567890123456789012 Existing Insurer ID= 6007

如果我使用现有保险公司字符串中的一个字符就可以了。

这是我演示问题的简化代码。

有没有人知道这里发生了什么?

我已经没有事情要尝试了。

由于

大卫

-- Email Variables
Declare @VAR_Dest_EmailAddress varchar(150)
set @VAR_Dest_EmailAddress = 'myemail@email.com.au'
Declare @VAR_Subject varchar(100)
Declare @VAR_Body  varchar(1000)

-- Format Variables
Declare @DateDisplayFormat int
Set @DateDisplayFormat = 106 -- DD MMM YYYY eg 25 MAY 2017
Declare @MoneyDisplayFormat int
set @MoneyDisplayFormat = 1  -- Commas every three digits and two digits to the right of the decimal point.


-- Data variables
Declare @sPlanNumber varchar(10)
Declare @dRenewal datetime
Declare @sExistingInsurer varchar(50)
Declare @lExistingInsurerID int

-- Set the Variables
Set @sPlanNumber = '12345'
Set @dRenewal = '2017-06-23 00:00:00.000'
set @sExistingInsurer = '1234567890123456789012'
set @lExistingInsurerID = '6007'

-- Set the body of the email
    set @VAR_Body = 'Renewal Date= ' + Convert(varchar(11),@dRenewal,@DateDisplayFormat) + CHAR(13)+ CHAR(10) 
    set @VAR_Body = @VAR_Body + 'Existing Insurer= ' + @sExistingInsurer + CHAR(13) + CHAR(10)
    set @VAR_Body = @VAR_Body + 'Existing Insurer ID= ' + Convert(varchar(10),@lExistingInsurerID) + CHAR(13) + CHAR(10)

-- Send the email
EXEC msdb.dbo.sp_send_dbmail 
    @recipients = @VAR_Dest_EmailAddress,
    @subject = @sPlanNumber,
    @body = @VAR_BODY,
    @profile_name = 'SQL Email Profile' ;

1 个答案:

答案 0 :(得分:0)

如果您对电子邮件格式(TEXT与HTML)没有要求,则可以使用HTML格式设置电子邮件。然后,您可以使用is_isogram(string)和其他html标记格式化电子邮件。

count = sum((len(set(s)) == len(s)) for s in l)

然后,您可以格式化您的电子邮件:

<br/>

可以在MSDN文档here

中找到参考