Nesta segunda parte do post sobre envio de e-mail no SQL Server, vamos mais alguns recursos.

Resultado de uma consulta
Podemos enviar o resultado de uma consulta por e-mail, para isso devemos utilizar a variável “@query”. No exemplo coloquei um “select” simples, mas você pode fazer o “select” que necessitar.

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'PerfilPadrão',
@recipients = 'andrebtoe@gmail.com',
@subject = 'Título',
@query = 'SELECT "Maria" AS "Nome do cliente",
	  20 AS "Idade";';

A procedure acima adiciona um envio de e-mail na fila, para o e-mail “andrebtoe@gmail.com”, utilizando o profiler “PerfilPadrão”, e o conteúdo do e-mail é o resultado da consulta.

Por padrão o limite de caracteres de envio é de 256 caracteres, mas é possível alterar esse valor, passando como parâmetro a variável “@query_result_width” ao chamar a procedure. O valor deve estar entre 10 e 32767.

Também podemos alterar o separador de colunas que vai para o corpo do e-mail, utilizando a variável “@query_result_separator”, por padrão o valor é um espaço.

A variável “@query_no_truncate” define se o texto do corpo do e-mail deve ser truncado ou não, se o valor for “0” (valor padrão), o texto é truncado em 256 caracteres. Defina “1” para não truncar o texto do corpo do e-mail.

E-mail com anexo
Para enviar um anexo devemos utilizar a variável “@file_attachments” com o caminho físico do arquivo.

EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'PerfilPadrão',
@recipients = 'andrebtoe@gmail.com',
@subject = 'E-mail com anexo',
@body = 'Conteúdo aqui',
@file_attachments = 'C:\texto.txt';

Acima estamos adicionando um envio de e-mail na fila, com um arquivo anexo. Certifique-se de que a extensão do arquivo é permitida (veja como adicionar uma extensão https://andrebtoe.com/2014/12/23/como-enviar-e-mail-no-sql-server-parte-1) e o tamanho máximo do arquivo anexo.

Configurando via T-SQL
Para configurar o Database Mail, execute:

-- Cria um conta no Database Mail
EXEC msdb.dbo.sysmail_add_account_sp
@account_name = 'ContaGmail', -- Nome da conta
@description = 'Conta do Gmail', -- Descrição da conta
@email_address = 'andrebtoe@gmail.com', -- Endereço de e-mail
@display_name = 'André Btoe', -- Nome de exibição do e-mail
@replyto_address = 'andrebtoe@gmail.com', -- Responder para
@mailserver_type = 'SMTP', -- Tipo de envio
@mailserver_name = 'smtp.gmail.com', -- Endereço do servidor de e-mail
@port = 587, -- Porta de envio
@use_default_credentials = 1, -- 0 para conexão não segura e 1 para conexão segura
@username = 'email@gmail.com', -- E-mail para autenticação
@password = 'senha aqui'; -- Senha para autenticação

-- Cria o profiler
EXEC msdb.dbo.sysmail_add_profile_sp
@profile_name = 'PerfilPadrão', -- Nome do profiler
@description = 'Perfil padrão'; -- Descrição do profiler

-- Adiciona uma conta no profiler
EXEC msdb.dbo.sysmail_add_profileaccount_sp
@profile_name = 'PerfilPadrão', -- Nome do profiler criado
@account_name = 'ContaGmail', -- Nome do conta criada
@sequence_number = 1; -- Número sequencial para determinar a ordem em que as contas de e-mail podem ser utilizadas

Acima criamos as mesmas configurações do primeiro passo, porem via T-SQL.

 

Espero ter ajudado!
Até a próxima pessoal!