.NET Framework

Como solicitar uma confirmação de leitura em e-mails enviados com .NET 2.0 ou superior?

Para solicitar uma confirmação de leitura de um e-mail no .NET Framework 2.0 ou superior, você precisa acrescentar a chave Disposition-Notification-To no cabeçalho do e-mail. Este cabeçalho é reconhecido pelos principais programas clientes de e-mail (Microsoft Outlook, por exemplo) como uma solicitação para envio de uma confirmação de leitura quando o e-mail é clicado pela primeira vez.

É importante deixar claro que o usuário pode clicar no e-mail sem necessariamente ler o conteúdo do mesmo. Além disto, esta solicitação não garante que você receberá uma confirmação de leitura. Seguem os principais motivos da não garantia de receber uma confirmação de leitura de um e-mail.

  • O programa cliente de e-mail pode não reconhecer o cabeçalho Disposition-Notification-To ou não implementar esta funcionalidade, o que é uma situação rara nos principais programas atuais.
  • O usuário pode desabilitar esta funcionalidade do seu programa cliente de e-mail,
    o que também é uma situação rara.
  • O usuário pode, opcionalmente, escolher a opção de não enviar uma confirmação de leitura para um e-mail particular. Esta situação, porém, não é tão rara quanto as anteriores. Ao clicar no e-mail com o cabeçalho Disposition-Notification-To pela primeira vez, o usuário costuma receber um quadro de diálogo perguntando se ele permite o envio de uma confirmação de leitura. Ele pode responder que não permite.

Feitas estas ressalvas, segue um exemplo de código possível, em C# e em Visual Basic, para você solicitar uma confirmação de leitura num e-mail enviado com as classes do namespace System.Net.Mail.

Versão com a linguagem de programação C#

using System.Net.Mail;

...

// Criação de uma mensagem de e-mail.
MailMessage mensagem = new MailMessage();
// Definição dos endereços de e-mail "De" e "Para".
mensagem.From = new MailAddress("origem@dominio.com.br");
mensagem.To.Add("destino@dominio.com.br");

// Definição do assunto e do corpo da mensagem.
mensagem.Subject = "Assunto da mensagem";
mensagem.Body = "Conteúdo do corpo da mensagem.";

// Requisição da confirmação de leitura por parte do usuário. Neste exemplo,
// a resposta da confirmação será enviada para o e-mail confirmacao@dominio.com.br.
mensagem.Headers.Add("Disposition-Notification-To", "confirmacao@dominio.com.br");

// Envio da mensagem.
SmtpClient clienteSmtp = new SmtpClient("nomeOuIPdoServidorSMTP");
clienteSmtp.Send(mensagem);

Versão com a linguagem de programação Visual Basic

Imports System.Net.Mail

...

' Criação de uma mensagem de e-mail.
Dim mensagem As New MailMessage()
' Definição dos endereços de e-mail "De" e "Para".
mensagem.From = New MailAddress("origem@dominio.com.br")
mensagem.To.Add("destino@dominio.com.br")

' Definição do assunto e do corpo da mensagem.
mensagem.Subject = "Assunto da mensagem"
mensagem.Body = "Conteúdo do corpo da mensagem."

' Requisição da confirmação de leitura por parte do usuário. Neste exemplo,
' a resposta da confirmação será enviada para o e-mail confirmacao@dominio.com.br.
mensagem.Headers.Add("Disposition-Notification-To", "confirmacao@dominio.com.br")

' Envio da mensagem.
Dim clienteSmtp As New SmtpClient("nomeOuIPdoServidorSMTP")
clienteSmtp.Send(mensagem)

Rogério Moraes de Carvalho
Twitter: @rogeriomc