Database Mail

O Database Mail é um recurso do SQL Server utilizado para envio de e-mails, através do mecanismo de banco de dados do SQL Server (Database Engine). Com o uso do Database Mail, aplicações podem enviar mensagens de e-mail para usuários, incluindo anexos. O envio é realizado através do protocolo SMTP, usando a porta 25.
Por padrão, o Database Mail encontra-se desativado. Para utilizar o Database Mail, é necessário, após habilitado, configurar profiles. Existem 2 tipos de profiles:

profile public é acessível por todos usuários do SQL Server;
profile Private é acessado apenas por membros da role DatabaseMailUserRole, dentro do database MSDB.

O envio de e-mails é realizado através da stored procedure SP_SEND_DBMAIL.

CONFIGURANDO O DATABASE MAIL

1 – Abrir a console SQL Server Management Studio, clicar com o botão direito no servidor e selecionar “New Query“;

2 – digitar o comando exibido na imagem abaixo. Na coluna Name, buscar por Database Mail XPs e verificar se na coluna run_value o valor é 1, caso positivo, o recurso está habilitado:

Tela1
3 – Após habilitar o recurso, é necessário configurar um perfil para ser utilizado pelo Database Mail. Para tal, vá em Management, clique com o botão direito do mouse em Database Mail e selecione “Configure Database Mail”;

4 – na tela “Select Configuration Task”, selecione a opção “Setup Database Mail by performing the following tasks:” e clique em Next;

Tela2
5 – Na tela “New Profile”, informe um nome para o perfil e adicione contas de e-mail no mesmo, clicando no botão ADD em “SMTP accounts”. Preencha os dados da tela, fornecendo informações de Account Name, e-mail address, server name e modo de autenticação (lembrando que o servidor SQL Server precisa estar autorizado no servidor SMTP para fazer envio de mensagens). Podem ser adicionadas várias contas em um único profile, isso diminui o risco de indisponibilidade, por exemplo, em caso de o servidor SMTP estiver indisponível, pois pode-se fornecer endereços diferentes para cada conta no perfil (o endereço de e-mail completo na imagem foi ocultado por motivos óbvios):

Tela4
6 – Na tela “Manage Profile Security”, deve-ser selecionado o tipo de perfil: Public ou Private. Profile Public estão disponíveis para serem utilizados por todos os usuários, já os profiles Private ficarão restrito à membros da role DatabaseMailUserRole, inserida no escopo do database MSDB. Caso seja escolhido o profile Private, é necessário definir o user que irá utilizar o profile (membros da role SYSADMIN possuem a permissão de utilizar o profile). Clique em User Name e selecione o user que terá permissão de utilizar o profile (lembrando que profile Public não necessitam desse tipo de configuração). Clique em Next:
Tela5
7 – Na tela seguinte, pode-se configurar parâmetros para envio de mensagens, como o tamanho máximo da mensagem (incluindo anexo), bloqueio de extensões, número de tentativas de envio, entre outros. De início, essa configuração pode ficar padrão. Clique em Next:

Tela6
8 – Na próxima tela, é informado um resumo das opções escolhidas. Para finalizar, clique em Finish:
Tela7

Feito isso, para testar digite o comando abaixo:

EXEC sp_send_dbmail
@profile_name=‘nome_profile’,
@recipients=‘endereco_destinatario’,
@subject=‘Teste de database mail’,
@body=‘Database Mail configurado com sucesso!’;

Lembrando que para envio de e-mails externos, é necessário autorizar, no servidor SMTP, o envio de mensagens pelo servidor de banco de dados.

Referências:
MSDN Database Mail

Abraços e até a próxima.

Anúncios

8 comentários sobre “Database Mail

  1. Pingback: Database Mail no SQL Server (Passo a Passo) | Alex Souza

  2. Angelo, fiz todos os passo conforme descrito, faço o envio do email através de uma procedure.

    EXEC msdb.dbo.sp_send_dbmail @profile_name=’GENESIS’,
    @recipients= @Email,
    @copy_recipients = @Email_Usuario_Modificacao,
    @subject = @Assunto,
    @body = @tableHTML,
    @body_format = ‘HTML’ ;
    quando executo a procedure passando os parametros @Email e @Email_Usuario_Modificacao envia o email normalmente para o destinatário e cópia.

    Porém pela aplicação passo os mesmo parametros, tessto se não deu erro na procedure… mesmo sem dar erro o email não é enviado.

    O tipo de perfil está como Público.

    Grato.

    Gabriel Alves

    • Gabriel, veja se há mensagem de erro nos logs da aplicação, pois se executando diretamente pela procedure funciona, pode ser que alguma configuração não esteja correta pela aplicação. Outra coisa, verifique se o user sql, utilizado pela aplicação, tem permissão para executar a procedure msdb.dbo.sp_send_dbmail.

    • Alessandro, ao habilitar o database mail, a procedure sp_send_dbmail é habilitada, e além dos parâmetros que informei, pode-se utilizar na querie o parâmetro @file_attachments, onde você informa o caminho físico do arquivo. Sobre a quantidade de linhas do arquivo, o que você deve configurar é a propriedade system parameters e definir o tamanho máximo do arquivo.
      Abraços.

      • Angelo, eu fiz o @file_attachments, porém, ele joga em formato texto ou csv. não gera as colunas. eu tenho uma query, que gera 3colunas, porém, sai tudo em uma linha só. teria algum script? veja como estou encaminhando os emails!

        EXEC msdb.dbo.sp_send_dbmail
        @profile_name = ‘email (ADM)’,
        @recipients = ‘alessandro@XXX.com.br’,
        @subject = ‘Relatório extraído do 0800 (Sql Server)’,
        @body = ‘Segue anexo relatório extraído do sistema 0800!‘,
        @body_format = ‘html’,
        @from_address = ‘alessandro@XXX.com.br’,
        @execute_query_database= ‘teste’,
        @query = ‘select UsuCodRef,UsuNome,UsuDatInclusao from teste where UsuTipo =”U” order by USUDATINCLUSAO DESC’,
        @query_attachment_filename = ‘relatório.xls’,
        @attach_query_result_as_file = 1,
        @query_result_header = 1,
        @query_result_width = 4096,
        @query_result_separator = ‘;’,
        @query_result_no_padding = 1;

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s