Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 电子邮件正文可以';在SQLServer2005中使用sp_send_dbmail时看不到_Sql Server 2005 - Fatal编程技术网

Sql server 2005 电子邮件正文可以';在SQLServer2005中使用sp_send_dbmail时看不到

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

我创建了一个自动发送电子邮件的程序。电子邮件到达了地址,一切似乎都很正常,但看不到尸体。我使用的是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 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,'')