我有一个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' ;
答案 0 :(得分:0)
如果您对电子邮件格式(TEXT与HTML)没有要求,则可以使用HTML格式设置电子邮件。然后,您可以使用is_isogram(string)
和其他html标记格式化电子邮件。
count = sum((len(set(s)) == len(s)) for s in l)
然后,您可以格式化您的电子邮件:
<br/>
可以在MSDN文档here
中找到参考