Arquitetura do Database Mail

O Database Mail consiste nos seguintes componentes principais:

  • Componentes de configuração e segurança

    O Database Mail armazena informações de configuração e segurança no banco de dados msdb. Objetos de configuração e segurança criam perfis e contas usadas pelo Database Mail.

  • Componentes de sistema de mensagens

    O banco de dados msdb atua como o banco de dados de correio-host que mantém os objetos do sistema de mensagens utilizado pelo Database Mail para enviar emails. Esses objetos compreendem o procedimento armazenado sp_send_dbmail e as estruturas de dados que guardam informações sobre mensagens.

  • Executável do Database Mail

    O executável do Database Mail é um programa externo que lê uma fila no banco de dados msdb e envia mensagens a servidores de email.

  • Componentes de registro em log e auditoria

    O Database Mail registra informações de log no banco de dados msdb e no log de eventos de aplicativos do Microsoft Windows.

Não é preciso compreender inteiramente a arquitetura do Database Mail para utilizá-lo com eficácia. Contudo, compreender os componentes do Database Mail e como eles interagem pode ajudá-lo no design de seus aplicativos e na solução de eventuais problemas.

A ilustração a seguir dá uma visão geral da arquitetura do Database Mail.

msdb envia mensagens a um servidor de email SMTP

O Database Mail foi projetado em uma arquitetura de filas que usa tecnologias do Service Broker. Quando os usuários executam sp_send_dbmail, o procedimento armazenado insere um item na fila de emails e cria um registro que contém a mensagem do email. A inserção da nova entrada na fila de emails inicia o processo externo do Database Mail ((DatabaseMail.exe). O processo externo lê as informações de email e envia a mensagem ao servidor ou servidores de email adequados. O processo externo insere um item na fila Status quanto ao resultado da operação de envio. A inserção da nova entrada na fila de status faz com que seja iniciado um procedimento armazenado que atualiza o status da mensagem de email. Além de armazenar a mensagem de email enviada ou não, o Database Mail também registra eventuais anexos dos emails nas tabelas do sistema. As exibições do Database Mail fornecem o status das mensagens para a solução de problemas, e os procedimentos armazenados permitem a administração da fila do Database Mail.

Apenas membros da função DatabaseMailUserRole no banco de dados msdb podem executar sp_send_dbmail.