2010-09-20 2 views
0

Je crée une procédure pour envoyer des e-mails automatiques. L'email arrive à l'adresse et tout semble fonctionner correctement mais le corps ne peut pas être vu. J'utilise sql 2005 et MS Exchange Server 2007. La partie de la procédure qui écrit le corps est la suivante.Le corps de l'e-mail ne peut pas être vu lors de l'utilisation de sp_send_dbmail dans le serveur SQL 2005

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' 

Répondre

0

Juste avant d'exécuter la PRINT sp_send_dbmail le paramètre @bodymsg afin que vous connaissez les données ont été correctement construit.

par exemple.

PRINT @bodymsg 
execute [msdb].[dbo].[sp_send_dbmail] 
@profile_name = 'CallCenter',   
@recipients = @email, 
@subject  = @subjectmsg, 
@body   = @bodymsg, 
@body_format = 'TEXT' 

Comme vous passer un certain nombre de paramètres à l'un d'entre eux pourrait être la mise en @bodymsg NULL

+0

Merci, c'était le problème. –

1

Juste pour ajouter à kevchadders répondre, lorsque vous appelez PRINT @bodymsg, si elle imprime rien tout alors vous savez que c'est un problème de concaténation nulle.

Si vous intégrez chaque variable ajoutée dans la fonction ISNULL(), il sera plus facile de trouver la variable à l'origine du problème.

par ex.

set @bodymsg = @bodymsg + ISNULL(@appnum,'') 

Ensuite, le corps de l'email sera imprimé, mais il y aura un paramètre manquant. Ensuite, vous devez découvrir pourquoi le paramètre est manquant.

+0

+1 bon point ... – kevchadders

0

Généralement lorsque j'ai ce problème avec le sp_send_dbmail, il est lié au fait de transmettre plus de caractères ou de données que la variable @body peut gérer. SQL Server renvoie une erreur indiquant que les données seront tronquées. L'erreur n'est pas fatale, de sorte que la procédure stockée continue à s'exécuter, ce qui entraîne un e-mail sans corps.

Questions connexes