
Clique aqui para ler todos os artigos desta edição
Como enviar e-mails com anexos no MS-SQL Server sem o uso do SQL Mail
Uma necessidade comum de quem trabalha com servidores MS-SQL Server, tanto para administradores de banco de dados quanto para desenvolvedores, é o envio de e-mails a partir do banco de dados. O método mais comum de se atender a esta necessidade se dá através do uso do SQL Mail. O detalhe é que para utilizar o SQL Mail é necessário a instalação de um cliente de mensagens no servidor de banco de dados e que, na maioria das vezes, é o Microsoft Outlook. Neste artigo exploraremos outra alternativa para o envio de e-mails a partir do servidor de banco de dados sem a utilização do SQL Mail e sem a necessidade da instalação de um cliente de mensagens
no servidor.
Visão geral da necessidade e da solução proposta
O SQL Mail permite o envio de e-mails a partir do servidor de banco de dados SQL Server de forma simples e rápida. Entretanto, devido ao fato do SQL Mail ser uma aplicação MAPI (ver Nota 1), um subsistema MAPI deve estar presente no servidor para que o SQL Mail possa funcionar. O Windows NT 4.0 instala um subsistema MAPI no servidor quando você instala o Windows Messaging. O Windows 2000, entretanto, não possui um subsistema MAPI. Desta forma, se você quiser utilizar o SQL Mail, precisará instalar um cliente MAPI - como o Microsoft Outlook.
Nota 1. MAPI
Messaging Application Programming Interface (MAPI) é um conjunto
de bibliotecas construído no Windows que permite que aplicativos
de envio e recebimento de e-mail possam trabalhar juntos
para a distribuição de mensagens.
Você pode utilizar outros métodos para o envio de e-mails SMTP (Simple Mail Transfer Protocol) a partir do servidor de banco de dados SQL Server. Uma alternativa é o uso do modelo de objetos CDONTS (Collaboration Data Objects for NT Server) e outra é o uso do modelo de objetos CDOSYS (Collaboration Data Objects for Windows 2000). Qualquer um desses modelos pode ser utilizado em conjunto com as stored procedures OLE Automation (sp_OA*; ver Nota 2) do SQL Server como alternativa ao SQL Mail para envio de e-mails.
Nota 2. OLE Automation
Object Linking and Embedding Automation (OLE Automation) é um
método de controle e utilização de objetos COM (Component Object
Model) independente de linguagem. No SQL Server, as stored
procedures OLE Automation permitem que você instancie e trabalhe
com objetos COM a partir do transact SQL (T-SQL).
Para os servidores que funcionam em Windows NT, a única opção é o uso do modelo de objetos CDONTS. O modelo de objetos CDOSYS passou a existir no Windows 2000 e permanece no Windows Server 2003. O modelo de objetos CDONTS não é suportado em servidores Windows Server 2003. Portanto, se seus servidores são Windows 2000 ou superiores, você deve utilizar o modelo de objetos CDOSYS.
Nos tópicos seguintes veremos como utilizar esses dois modelos de objetos para o envio de e-mails.
Como utilizar o CDONTS para envio de emails em servidores Windows NT
O modelo de objetos CDONTS foi especialmente desenvolvido para proporcionar funcionalidades de envio de mensagens para aplicações web, permitindo o envio de mensagens no formato HTML - diferentemente de aplicações baseadas em MAPI (como o SQL Mail) que não possuem esse recurso. O Microsoft Internet Information
Server (IIS) 4.0 ou posterior instala o CDONTS.
O modelo de objetos CDONTS permite o envio de emails através de um servidor SMTP. Se você não possui um servidor SMTP, existe a possibilidade de utilização do servidor virtual SMTP instalado pelo IIS para encaminhamento da mensagem.
Para utilizar o CDONTS para envio de e-mails a partir do servidor SQL Server siga os passos a seguir:
1. Instalar o IIS e manter seus serviços ativos no computador onde o SQL Server está instalado;
2. Configurar seu servidor de e-mails SMTP como “Smart Host” (detalhado no próximo tópico) para que o serviço SMTP do IIS encaminhe automaticamente qualquer e-mail SMTP enviado do seu servidor local para o servidor de e-mails SMTP destinado
à entrega;
3. Criar uma stored procedure no SQL Server para o envio de e-mails a partir do servidor de banco de dados.
Quando você utiliza o CDONTS ao invés do SQL Mail:
• não existe a necessidade de instalação de um cliente de mensagens no SQL Server (por exemplo, Microsoft Outlook);
• não existe também a necessidade do servidor Exchange. Você pode utilizar qualquer servidor de emails que suporte mensagens SMTP.
A desvantagem é que com o uso do CDONTS você não pode ler nem processar uma mensagem que foi enviada para o computador onde o SQL Server está instalado. Também não é possível substituir a funcionalidade do SQL Agent Mail (ver Nota 3).
Nota 3. SQL Agent Mail
O SQL Agent Mail permite o envio de e-mails com uma conta e perfil que podem ser diferentes dos utilizados no SQL Mail para processos executados pelo serviço SQL Agent. Os e-mails podem ser enviados quando um alerta é acionado ou então quando um job é executado com sucesso ou falha.
Como configurar o servidor de e-mails SMTP como “Smart Host”
...