Repostagem – Database Mail – Configuração Através de Scripts
DatabaseMail – Configuração através de scripts
Postei um tempo atrás um artigo sobre o DatabaseMail (aqui), mas era através dos menus de configuração. Hoje trago para vocês a realização da mesma tarefa, só que através de scripts.
Configurando o DatabaseMail
-- Cria uma account do Database Mail EXECUTE msdb.dbo.sysmail_add_account_sp @account_name = 'SQL', @description = 'Conta de email para o envio do email na rotina de log de erro.', -- Uma descrição para a sua account @email_address = 'sql@zavaschi.com', -- Email que será -- mostrado como o emissor @replyto_address = 'sql@zavaschi.com', -- Email de reply @display_name = 'SQL Server', -- Nome mostrado no email enviado @mailserver_name = 'smtp.zavaschi.com', -- Servidor smtp @port = 25, -- Porta @username = 'sql', -- Login do servidor de smtp @password = 'sql'; -- senha do servidor de smtp -- Cria um profile do Database Mail EXECUTE msdb.dbo.sysmail_add_profile_sp @profile_name = 'SQL Profile', @description = 'Profile usado para o envio do email na rotina de log de erro.' ; -- Cria o profile -- Adiciona a account ao profile EXECUTE msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'SQL Profile', @account_name = 'SQL', @sequence_number =1 ; -- Associa a account ao profile, recém criados. -- Garante acesso ao profile a todos os usuarios da base msdb EXECUTE msdb.dbo.sysmail_add_principalprofile_sp @profile_name = 'SQL Profile', @principal_name = 'public', @is_default = 1; -- Configura o profile criado como público e padrão.
Pronto, só isso. E agora para enviar email é da mesma maneira:
EXEC msdb.dbo.sp_send_dbmail @profile_name='SQL Profile', @recipients='sql@zavaschi.com', @subject='Titulo', @body='Corpo da mensagem.'
Tranquilo né? Mas se ao executar a procedure de envio de email você obter o seguinte erro:
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.
É pelo fato do DatabaseMail estar desabilitado no seu SQL Server, então rode o seguinte script:
sp_configure 'Database Mail XPs', 1 GO RECONFIGURE
Há alguns casos que não é possível executar o RECONFIGURE diretamente (sem entrar nos méritos)
Executar então: RECONFIGURE WITH OVERRIDE
Espero que seja útil para você, acredito que sim, pois muitos me pedem!
Grande abraço!
Thiago Zavaschi
Repostagem – Tutorial: Configurando o Database Mail
Então pessoal, sei que prometi o artigo de PowerPivot, mas estou finalizando-o ainda. Enquanto isso farei a repostagem de alguns posts do antigo blog que não vieram no processo de importação (não serão muitos).
Tutorial: Configurando o DatabaseMail
O Database Mail é a evolução do SQL Mail (método marcado como obsoleto e fadado a ser removido do SQL Server em uma próxima versão) com melhorias. Se você por alguma razão utiliza o SQLMail com o SQL Server 2005 ou 2008, considere a mudança imediata.
O objetivo deste artigo é mostrar o wizard de configuração do DatabaseMail e demonstrar como enviar emails através do T-SQL, além de como verificar o status dos emails enviados.
A base deste tutorial é o novo SQL Server 2008, porém os passos são muito similares no SQL Server 2005.
Configurando o Database Mail
Abra a instância desejada, abra a janela Object Explorer, abra a pasta Management e clique duas vezes no “Database Mail” para abrir a seguinte janela:

Iniciaomente somos deparados com a tela de boas vindas do wizard de configuração. Não há muito oq ue fazer aqui, podemos marcar para não ser exibida novamente e clicar em Next para prosseguir.

Marque a opção “Set up Database Mail by performing the following tasks:” e clique em next.

Caso o Database Mail não esteja habilitado você será indagado a habilitá-lo. Clique em Yes para ativar.

Dê um nome e uma descrição a conta. Após isto clique em “Add”.

Configure os dados pedidos: Nome, descrição, endereço de email, servidor smtp, e assim por diante. Clique em Ok quando terminar.

Clique em next para prosseguir.

Aqui estou tornando essa configuração pública (marcando a checkbox “public”) e tornando o perfil padrão.

Agora é a hora de configurar alguns parâmetros de sistema, como por exemplo, a extensão de arquivos que não podem ser enviados ao utilizar o database mail.
Após configurar como desejar, clique em next.

Clique em finish para encerrar o wizard e terminar de configurar a sua conta.

Esta tela mostra o progresso da configuração. Repare na coluna status, pois ela fornece a informação de se a tarefa foi bem sucedida ou não. Clique em close para encerrar.
Enviando emails
Para enviar emails através do DatabaseMail é bastante simples.
É necessário primeiramente executar a seguinte configuração para garantir que não haverá problemas:
sp_configure 'show advanced', 1
GO
RECONFIGURE
GO
sp_configure 'Database Mail XPs', 1
GO
RECONFIGURE
GO
Na sequência podemos utilizar a stored procedure de sistema denominada: sp_send_dbmail, cuja sintaxe é mostrada a seguir (para mais detalhes consulte o books online):
sp_send_dbmail [ [ @profile_name = ] 'profile_name' ]
[ , [ @recipients = ] 'recipients [ ; ...n ]' ]
[ , [ @copy_recipients = ] 'copy_recipient [ ; ...n ]' ]
[ , [ @blind_copy_recipients = ] 'blind_copy_recipient [ ; ...n ]' ]
[ , [ @subject = ] 'subject' ]
[ , [ @body = ] 'body' ]
[ , [ @body_format = ] 'body_format' ]
[ , [ @importance = ] 'importance' ]
[ , [ @sensitivity = ] 'sensitivity' ]
[ , [ @file_attachments = ] 'attachment [ ; ...n ]' ]
[ , [ @query = ] 'query' ]
[ , [ @execute_query_database = ] 'execute_query_database' ]
[ , [ @attach_query_result_as_file = ] attach_query_result_as_file ]
[ , [ @query_attachment_filename = ] query_attachment_filename ]
[ , [ @query_result_header = ] query_result_header ]
[ , [ @query_result_width = ] query_result_width ]
[ , [ @query_result_separator = ] 'query_result_separator' ]
[ , [ @exclude_query_output = ] exclude_query_output ]
[ , [ @append_query_error = ] append_query_error ]
[ , [ @query_no_truncate = ] query_no_truncate ]
[ , [ @mailitem_id = ] mailitem_id ] [ OUTPUT ]
Segue um exemplo prático de envio de email:
USE msdb
GO
EXEC sp_send_dbmail @profile_name='Zavaschi', -– Coloque o profile desejado.
@recipients='thiagoh@techresult.com.br', – Coloque os receptores da mensagem.@subject='Título da Mensagem',
@body='Corpo da mensagem.
E-mail recebido através do database mail do SQL Server!!!!'
Note que o envio não é disparado necessariamente na hora, ele é posto numa fila e o envio dependerá das condições da rede e de conectividade.
Podemos analisar as mensagens e o status do envio das mesmas, através dos seguintes comandos de seleção:
SELECT * FROM sysmail_mailitems
GO
SELECT * FROM sysmail_log
GO
É isso, abraços pessoal!
Thiago Zavaschi