Sql server 2005 电子邮件正文可以';在SQLServer2005中使用sp_send_dbmail时看不到
我创建了一个自动发送电子邮件的程序。电子邮件到达了地址,一切似乎都很正常,但看不到尸体。我使用的是sql 2005和MS exchange server 2007。编写正文的过程部分如下所示Sql server 2005 电子邮件正文可以';在SQLServer2005中使用sp_send_dbmail时看不到,sql-server-2005,Sql Server 2005,我创建了一个自动发送电子邮件的程序。电子邮件到达了地址,一切似乎都很正常,但看不到尸体。我使用的是sql 2005和MS exchange server 2007。编写正文的过程部分如下所示 declare @bodymsg as varchar(1000) set @bodymsg = 'The application ' set @bodymsg = @bodymsg + @appnum set @bodymsg = @bodymsg + ' have been auto assign
declare @bodymsg as varchar(1000)
set @bodymsg = 'The application '
set @bodymsg = @bodymsg + @appnum
set @bodymsg = @bodymsg + ' have been auto assign to you by the call center auto assign program.'
set @bodymsg = @bodymsg + CHAR(13)
set @bodymsg = @bodymsg + 'The borrower information is as follow:'
set @bodymsg = @bodymsg + CHAR(13)
set @bodymsg = @bodymsg + 'Name: '
set @bodymsg = @bodymsg + @borrower
set @bodymsg = @bodymsg + CHAR(13)
set @bodymsg = @bodymsg + 'Email: '
set @bodymsg = @bodymsg + @borremail
set @bodymsg = @bodymsg + CHAR(13)
set @bodymsg = @bodymsg + 'Phone: '
set @bodymsg = @bodymsg + @borrhome
set @bodymsg = @bodymsg + CHAR(13)
set @bodymsg = @bodymsg + 'Cellphone: '
set @bodymsg = @bodymsg + @borrcell
set @bodymsg = @bodymsg + CHAR(13)
set @bodymsg = @bodymsg + CHAR(13)
set @bodymsg = @bodymsg + 'Please contact the borrower ASAP.'
execute [msdb].[dbo].[sp_send_dbmail]
@profile_name = 'CallCenter',
@recipients = @email,
@subject = @subjectmsg,
@body = @bodymsg,
@body_format = 'TEXT'
在执行sp_send_dbmail之前,请打印@bodymsg参数,以便知道数据已正确生成 e、 g
当您向其传递大量参数时,其中一个参数可能会将@bodymsg设置为NULL只是为了添加到kevchadders reply,当您调用PRINT@bodymsg时,如果它根本不打印任何内容,那么您就知道这是一个空连接问题 如果将附加的每个变量包装到ISNULL()函数中,则更容易找到导致问题的变量 例如
然后将打印电子邮件的正文,但会缺少一个参数。然后您需要找出参数丢失的原因。通常,当sp_send_dbmail出现此问题时,它与传递更多字符或数据有关,而@body变量可以处理这些字符或数据。SQL Server抛出一个错误,表示数据将被截断。该错误不是致命的,因此存储过程继续运行,导致电子邮件没有正文 谢谢,这就是问题所在。
PRINT @bodymsg
execute [msdb].[dbo].[sp_send_dbmail]
@profile_name = 'CallCenter',
@recipients = @email,
@subject = @subjectmsg,
@body = @bodymsg,
@body_format = 'TEXT'
set @bodymsg = @bodymsg + ISNULL(@appnum,'')