Como configurar e enviar emails usando o Database Mail no SQL Server 2005

Problema do aluno: Trabalho com SQL Server e preciso enviar e-mails. Como faço?

Solução: Na verdade, temos três soluções possíveis para isso:

  • Database Mail - envia e-mails através de uma conta SMTP (é um recurso do SQL Server 2005);
  • SQL Mail - envia e-mails através de uma conta do Exchange (funciona no SQL Server 2005 e no SQL Server 2000);
  • CDONTS.DLL ou CDO.SYS - envia e-mails usando uma conta SMTP (independe de SQL Server).

Nesse primeiro post, vou mostrar como configurar e enviar e-mails usando o Database Mail do SQL Server 2005.

Abra o SQL Server Management Studio e, no Object Explorer (se ele não estiver visível, aperte a tecla [F8]), dê um clique com o botão direito do mouse sobre o item [Database Mail]. No menu de contexto, clique em [Configure Database Mail]:

sqlmail-0001.gif

Uma tela de boas vindas é apresentada. Clique em [Next]:

sqlmail-0002.gif

Selecione a primeira das opções apresentadas por essa tela. Ela cria um profile (perfil de conta) para ser usado no envio de e-mails:

sqlmail-0003.gif

Dê um nome para o profile e uma descrição (opcional) para o mesmo. Clique em [Add]:

sqlmail-0004.gif

Preencha, na tela seguinte, os campos, conforme a figura abaixo e clique em [OK]:

sqlmail-0005.gif

Veja que a lista SMTP accounts agora tem um item. Clique em [Next]:

sqlmail-0006.gif

Marque o checkbox [Public] para o profile:

sqlmail-0007.gif

Nessa mesma tela, selecione a opção [Yes] em [Default profile]. Clique em [Next]:

sqlmail-0008.gif

Veja se as opções (como tamanho máximo do e-mail) atende às suas necessidades e clique em [Next]:

sqlmail-0009.gif

Na tela final, clique em [Finish]:

sqlmail-0010.gif

O SQL Server cria o profile, segundo suas especificações. Clique em [Close]:

sqlmail-0011.gif

Voltando ao Object Explorer do Management Studio, clique com o botão direito (novamente) sobre o item [Database Mail] escolhendo a opção Send Test E-Mail:

sqlmail-0012.gif

Digite um e-mail válido em [To] e clique em [Send Test E-Mail]:

sqlmail-0013.gif

Você deverá receber um e-mail semelhante a:

sqlmail-0014.gif

Agora, abra uma nova query e execute o comando abaixo:

EXEC MSDB..SP_SEND_DBMAIL
@RECIPIENTS = ‘agnaldo@50minutos.com.br’, –DESTINATÁRIO DO E-MAIL
@SUBJECT = ‘ASSUNTO’, –ASSUNTO DO E-MAIL
@BODY = ‘TESTE DE ENVIO DE E-MAIL’ –CORPO DO E-MAIL

O seguinte erro pode ser apresentado:

Msg 15281, Level 16, State 1, Procedure sp_send_dbmail, Line 0
SQL Server blocked access to procedure ‘dbo.sp_send_dbmail’ of component ‘Database Mail XPs’ because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of ‘Database Mail XPs’ by using sp_configure. For more information about enabling ‘Database Mail XPs’, see “Surface Area Configuration” in SQL Server Books Online.

Se esse erro ocorrer, você deve abrir o aplicativo SQL Server Surface Area Configuration (está no menu [Configuration Tools]) e clicar em [Surface Area Configuration For Features]:

sqlmail-0015.gif

Na tela que será apresentada, você deve marcar o checkbox [Enable Database Mail Stored Procedures]:

sqlmail-0016.gif

Executando o comando de envio de e-mail novamente, ele funcionará sem problema e você receberá um e-mail como:

sqlmail-0017.gif