Você está na página 1de 5

Configurando o SQL Mail com o Outlook 2000 - Passo a passo sem mistrios Publicado em: 30/07/2004 Configurando o SQL

Mail com o Outlook 2000 - Passo a passo sem mistrios Introduo Uma das grandes funcionalidades do Microsoft SQL Server 2000, sem dvida, o SQL Mail, atravs do qual se pode enviar e receber e-mails. Este artigo demonstra os passos para que isto seja possvel, utilizando-se o OutLook 2000 e o Windows 2000 Server, alm de descrever todas as system procedures existentes para enviar, receber, deletar emails. Abrangendo inclusive, a criao de alertas, operadores no SQL Server Agent. Passos iniciais Este artigo mostra a configurao do SQL Mail apenas com o Outlook 2000, que dentre as verses do Outlook, foi a que melhor se comportou. Antes de iniciar, convm que seja verificado se os ltimos pacotes de correo (Service Pack1) esto instalados, tanto no MS SQL SERVER quanto no sistema operacional em uso. possvel que erros ocorram por ocasio da falta de alguma dessas atualizaes. Configurando o Mapi Profile O primeiro passo a ser seguido o de iniciar os servios do SQL Server e do SQL Server Agent com o mesmo usurio de sistema usado para criar o mapi profile no Outlook 2000. Tomando por base o Windows 2000 Server, para iniciar os servios com uma conta diferente da Local System, acesse o Painel de Controle Ferramentas Administrativas Servios. Em outros sistemas operacionais possvel que esses passos sejam diferentes. Dentre os servios que sero listados, deve-se procurar o MSSQLSERVER e SQLSERVERAGENT e solicitar suas propriedades. A tela da Figura 1 dever aparecer:

Figura 1: Trocando o usurio que ir iniciar os servios MSSQLSERVER e SQLSERVERAGENT OBS: 1 O Service Pack 3 (ltimo) para o SQL SERVER 2000 pode ser encontrado em http://www.microsoft.com/sql/downloads/2000/sp3.asp . Novas atualizaes para o Sistema Operacional podem ser obtidos em http://windowsupdate.microsoft.com A configurao do usurio que iniciar o sistema dever ser feita na aba Logon Efetuar logon como. Caso seja um usurio com direitos administrativos no preciso se preocupar com permisses. Caso contrrio, aconselha-se procurar na Internet algum utilitrio que auxilie na identificao das permisses mnimas necessrias para isso. Dois interessantes so o FILEMON e REGMON, encontrados facilmente no Google (www.google.com.br). Para identificar as permisses necessrias basta iniciar algum dos utilitrios citados e tentar iniciar o SQL Server e o SQL Server Agent. Com os registros que sero emitidos possvel ajustar as permisses onde ocorreram Denied. Configurando o Outlook 2000 Completada essa parte, deve ser efetuado um novo login no sistema utilizando o usurio escolhido para se iniciar o servio do MSSQLSERVER e SQLSERVERAGENT. Agora ser configurado o mapi profile no Outlook 2000. Indo ao Painel de Controle Correio, caso a tela que aparea no seja a da figura abaixo, deve-se solicitar a guia Mostrar Perfis, conforme Figura 2.

Figura 2: Verificando os mapi profiles existentes no Windows 2000 Server Na referida tela, deve-se Adicionar... um novo perfil, escolhendo a opo Correio eletrnico da Internet, conforme Figura 3.

Figura 3: Criando novos mapi profiles. Ao avanar, ser pedido o nome do perfil (qualquer nome). Ao se clicar em Configurar conta de correio eletrnico, ser possvel informar todos os dados necessrios ao envio e recebimento de e-mails, como o servidor smtp, pop3, senhas, etc. Avanando, ser solicitado o caminho fsico onde devero ser guardadas as caixas postais. Essa escolha livre. Esses passos so os necessrios para se concluir a configurao do profile Mapi. Configurando a opo de suporte ao correio no Outlook 2000 Aps configurar o profile, deve-se chamar Outlook 2000 e acessar as Ferramentas Opes Servio de correio Reconfigurar suporte a correio, e marcar a segunda opo, conforme Figura 4 abaixo:

Figura 4: Trocando a opo do servio de correio eletrnico Essa configurao necessria para no ser preciso deixar o Outlook 2000 em execuo o tempo todo, recebendo e enviando e-mails. Configurando o SQL MAIL Aps abrir o Enterprise Manager e acessar o servidor SQL Server, deve-se chamar Support Services SQL Mail Propriedades. A seguinte tela (Figura 5) dever aparecer:

Figura 5: Visualizando os mapi profiles para utilizao no SQL Mail Aparecer uma lista dos mapi profiles configurados. Neste campo no basta digitar um nome previamente definido. Se o nome do Profile no estiver na listagem porque houve um erro de configurao. Se a configurao previamente realizada estiver sendo mostrada, a mesma deve ser escolhida e testada (clicar no boto Teste). Esses so os passos necessrios configurao do SQL Mail. Se tudo ocorreu bem, j possvel utilizar qualquer Procedure para enviar e receber e-mails pelo SQL Server. Configurando o SQL AGENT MAIL O Sql Agent Mail, que um recurso do SQL SERVER responsvel por enviar e-mail aos operadores em caso de ocorrerem erros no SQL SERVER ou informar sobre sucessos e falhas em Jobs. Para configurar o SQL Server Agent Mail, basta acessar Management SQL Server Agent Propriedades. A tela mostrada na Figura 6 aparecer:

Figura 6: Visualizando e setando o mapi profile a sesso Mail do SQL Agent Mail Deve-se escolher no grupo Mail Session o profile previamente configurado, e test-lo. H ainda a opo de salvar as mensagens enviadas. O SQL Agent Mail envia e-mail apenas para os operadores existentes na instncia do SQL Server. Para configurar os operadores, basta acessar Management Sql Server Agent Operadores:

Figura 7: Operadores existentes na instncia Na imagem mostrada (Figura 8), deve-se clicar com o boto direito do mouse no lado direito da tela e escolher Novo Operador. Na aba Geral, devese informar o nome, e-mail, Pager e o endereo da mquina, uma vez que possvel enviar uma mensagem para o computador que o operador estiver usando atravs do comando NET SEND. Na aba Notificaes possvel configurar que alertas sero enviados para o operador por ocasio de sucessos e falhas das Jobs escolhidas. Se for escolhido o envio para Pagers, pode-se agendar (schedules) os dias e horrios para a notificao. Essa opo apenas para Pager.

Figura 8: Criao do novo operador Veja que voc configura notificaes por jobs ou alerts, para voc criar um alert para um evento no SQL Server, v em management, sql server agent, Alerts. No lado direito, clique em novo alerta. Voc configura um alert, para um erro, baseado tambm na severity utilizado no raiserror, para um database ou para todos, ou se a mensagem de erro contiver um texto especificado, isso configurado na guia General, na guia Response, s tem duas, voc configura se vai executar um job e/ou se vai informar a algum operador, indicando a forma de notificao (email, Pager, net send), alm de ainda poder configurar algum texto adicional. Observe que as configuraes para notificaes podem ser para Jobs ou Alerts. Para se criar um Alert para um evento no SQL Server, basta acessar Management Sql Server Agent Alerts. No lado direito, deve-se escolher Novo Alerta. Um Alert pode ser configurado para um evento do SQL Server ou para uma condio de performance do SQL Server. Na primeira situao configurase o alerta para um nmero de erro, para a severity, para um texto do erro em todos os databases ou para um especfico. Na segunda opo, utiliza-se contadores de performance, para gerar um alerta.

Figura 9: Criando novo alerta A Integrao de Procedures com o SQL Mail Ser tratado agora sobre alguns procedimentos internos do SQL Mail usadas para enviar e receber e-mail atravs do SQL Server 2000. A primeira coisa que se deve fazer para enviar ou receber e-mails iniciar o Sql Mail atravs de uma Stored Procedure: USE master EXEC xp_startmail sempre interessante iniciar logo o SQL Mail, pois a execuo das system procedures ficar mais rpida. Semelhantemente, deve-se parar o Sql Mail quando o mesmo no estiver sendo utilizado. Contudo, antes deve ser averiguado se no h algum Job ajustado para sempre receber e-mails. A chamada se d da seguinte forma: USE master EXEC xp_stopmail Enviando emails

A primeira procedure, a xp_sendmail, que contm a rotina completa para enviar o email: xp_sendmail {[@recipients =] 'recipients [;...n]'} [,[@message =] 'message'] [,[@query =] 'query'] [,[@attachments =] 'attachments [;...n]'] [,[@copy_recipients =] 'copy_recipients [;...n]' [,[@blind_copy_recipients =] 'blind_copy_recipients [;...n]' [,[@subject =] 'subject'] [,[@type =] 'type'] [,[@attach_results =] 'attach_value'] [,[@no_output =] 'output_value'] [,[@no_header =] 'header_value'] [,[@width =] width] [,[@separator =] 'separator'] [,[@echo_error =] 'echo_value'] [,[@set_user =] 'user'] [,[@dbuse =] 'database'] Os parmetros devem ser definidos de acordo com os seguintes critrios:

@recipients - Quem ir receber o email @message - Texto que ir corpo da mensagem @query - Qualquer query vlida @attachments - Qualquer arquivo do servidor @copy_recipients - Quem ir receber, equivalente ao CC @blind_copy_recipients - Quem ir receber, equivalente ao BCC @subject - Assunto do email @attach_results - Define se o resultado da query vai ser adicionado ao email, ou utilizar o primeiro arquivo anexado @no_output - Define que no retornar mensagem nenhuma a sesso que enviou @set_user - Definir qual contexto de segurana vai rodar a query, ou seja, qual usurio, por default, o mesmo usurio que ta chamando a procedure xp_sendmail @dbuse - Definir qual database ser utilizado, por default, utilizado o database default definido na criao do login, em security, logins @no_header - Definir se ir a informao de cabealho das colunas @width - Defini o tamanho da linha no texto resultante da query @separator - o separador das colunas no resultado da query

@echo_error - Definir se os erros gerados pela consulta da query, ir ser enviados no email. Alguns exemplos prticos Enviar um email para um email: EXEC xp_sendmail 'gilberto@digizap.com.br', 'The master database is full.' Enviar email com cpia para algum e definindo o assunto: EXEC xp_sendmail @recipients = 'gilberto@digizap.com.br;gilberto@webdatarn.com.br', @message = 'The master database is full.', @copy_recipients = 'teste@teste.com.br;teste1@teste.com.br', @subject = 'Master Database Status' Enviando o resultado de uma query, atachando o resultado ao invs de vir na mensagem, caso queira vir na mensagem, basta retirar o @attach_results e o @attachments: EXEC xp_sendmail @recipients = 'gilberto@digizap.com.br;gilberto@webdatarn.com.br', @message = 'Segue relao de usurios do banco de dados Master.', @subject = 'Uusrios do banco de dados', @dbuse= 'Master', @query='SELECT NAME FROM SYSUSERS', @attach_results=true,@attachments='usuariosmaster.txt' Enviar email com algum arquivo atachado: EXEC xp_sendmail @recipients = 'gilberto@digizap.com.br;gilberto@webdatarn.com.br', @message = 'Segue arquivo baseclass.txt', @subject = 'Arquivo', @attachments='c:\BaseClass.txt' Enviando emails com corpo maior que 8000 caracteres. Como se pode notar, o parmetro @message suporta at 8000 caracteres, mas com o cdigo abaixo possvel aumentar esse valor: CREATE TABLE ##tabela (campotexto text) INSERT ##tabela values ('TEXTO GRANDE') DECLARE @cmd varchar(1000) SET @cmd = 'SELECT campotexto FROM ##tabela' EXEC master.dbo.xp_sendmail 'gilberto@digizap.com.br', @query = @cmd, @no_header= 'TRUE' DROP TABLE ##tabela Observe que foi utilizada uma tabela temporria GLOBAL visto que o SQL Mail abre outra seo para gerar a query, do parmetro @query. Algo interessante que todas as Extended Procedures (XPs) so Bibliotecas de Ligao Dinmica (DLLs). Dessa forma, possvel gerar as prprias XPs utilizando dlls desenvolvidas em qualquer linguagem. Com a procedure sp_addextendedproc adiciona-se XPs ao servidor. Recebendo emails So 3 procedures utilizadas para visualizar os e-mails existentes na caixa de entrada (inbox) do cliente Outlook 2000. Vamos nos prender apenas a procedure principal, a xp_readmail utilizada para ver os e-mails. xp_readmail [[@msg_id =] 'message_number'] [, [@type =] 'type' [OUTPUT]] [,[@peek =] 'peek'] [,[@suppress_attach =] 'suppress_attach'] [,[@originator =] 'sender' OUTPUT] [,[@subject =] 'subject' OUTPUT] [,[@message =] 'message' OUTPUT] [,[@recipients =] 'recipients [;...n]' OUTPUT] [,[@cc_list =] 'copy_recipients [;...n]' OUTPUT] [,[@bcc_list =] 'blind_copy_recipients [;...n]' OUTPUT] [,[@date_received =] 'date' OUTPUT] [,[@unread =] 'unread_value' OUTPUT] [,[@attachments =] 'attachments [;...n]' OUTPUT]) [,[@skip_bytes =] bytes_to_skip OUTPUT] [,[@msg_length =] length_in_bytes OUTPUT] [,[@originator_address =] 'sender_address' OUTPUT]] Os parmetros devem ser definidos de acordo com os seguintes critrios:

@msg_id - Nmero da mensagem

@originator_address = Endereo do remetente Concluso Como podemos notar, o poder dessa ferramenta do SQL Server extremamente grande, com os exemplos apresentados neste artigo comeamos a imaginar diversas situaes reais para sua utilizao, tendo como resultado um ganho enorme de produtividade.

@peek - Ler a mensagem sem colocar com READ @suppress_attach = - Desconsiderar arquivos atachados @originator = - Email da pessoa que enviou @subject = - Assunto do email @message = - Corpo do email @recipients = - Destinatrios @cc_list = - Destinatrios via cpia @bcc_list = - Destinatrios via cpia oculta @date_received = - Data da mensagem @unread = - Email lido ou no @attachments = - Arquivos anexados @skip_bytes = Desconsiderar alguns bytes @msg_length = Tamanho da mensagem

Você também pode gostar