Enviando email com SMTP Autenticado

Publicado: 13/09/2004 em IntoSpaces
Olá Pessoal!
Acho que é hora de começar a postar artigos técnicos por aqui neh? >_<

Hoje vou mandar uma classe para enviar emails que faz utilização do recurso de autenticacao de smtp.

Essa classe foi desenvolvida para ajudar no desenvolvimento de projeto da célula Unifev.NET e virá muito mais de lá!!

Notem que utilizei nela propriedades ReadOnly, limitando a utilização da classe aos contrutores, mas nada impede de vcs alterarem isso de acordo com a sua necessidade.

Vamos ao código!!

using System;
using System.Web.Mail;
using System.Collections;

namespace

ShinjiLib
{
/// <summary>
/// Classe para envio de emails com suporte a servidores SMTP autenticados
/// </summary>

public class Mail
{
public Mail(string to_, string from_, string body_, string subject_, string smtpserver_, string user_, string pass_,bool isauthenticated_)
{
to =to_;
from = from_;
body = body_;
subject = subject_;
smtpserver = smtpserver_;
user = user_;
pass = pass_;
isauthenticatedserver = isauthenticated_;
}

#region

Enums
/// <summary>
/// Formato do texto enviado no corpo da mensagem
/// </summary>

public enum eFormat
{Text,Html}

/// <summary>
/// Prioridade da mensagem
/// </summary>
public enum ePriority
{High, Low, Normal}

/// <summary>
/// Codificacao do corpo da mensagem
/// </summary>

public enum eEncoding
{UTF7,UTF8,ASCII}

#endregion

#region

Properties
private string from = string.Empty;
private string to = string.Empty;
private string subject = string.Empty;
private string body = string.Empty;
private string cc = string.Empty;
private string bcc = string.Empty;
private string urlcontentbase = string.Empty;
private string urlcontentlocation = string.Empty;
private string smtpserver = string.Empty;
private string user = string.Empty;
private string pass = string.Empty;
private bool isauthenticatedserver = false;
private int port = 25;
private ArrayList attachments = null;
private eEncoding encoding = eEncoding.ASCII;
private ePriority priority = ePriority.Normal;
private eFormat format = eFormat.Text;

/// <summary>
/// Formato da mensagem
/// </summary>
public eFormat Format
{get{return format;}}

/// <summary>
/// Prioridade da mensagem
/// </summary>
public ePriority Priority
{get{return priority;}}

/// <summary>
/// Codificacao da mensagem
/// </summary>
public eEncoding Encoding
{get{return encoding;}}

/// <summary>
/// Lista de anexos da mensagem
/// </summary>
public ArrayList Attachments
{get{return attachments;}}

/// <summary>
/// Nome do usuario no servidor smtp
/// </summary>
public string User
{get{return user;}}

/// <summary>
/// Senha do usuario no servidor smtp
/// </summary>
public string Pass
{get{return pass;}}

/// <summary>
/// Porta para a comunicacao com o servidor smtp
/// </summary>
public int Port
{get{return port;}}

/// <summary>
/// O servidor requer autenticacao?
/// </summary>
public bool IsAuthenticatedServer
{get{return isauthenticatedserver;}}

/// <summary>
/// Servidor SMTP
/// </summary>
public string SmtpServer
{get{return smtpserver;}}

/// <summary>
/// Email do remetente
/// </summary>
public string From
{get{return from;}}

/// <summary>
/// Email do destinatário
/// </summary>
public string To
{get{return to;}}

/// <summary>
/// Assunto da mensagem
/// </summary>
public string Subject
{get{return subject;}}

/// <summary>
/// Corpo da mensagem
/// </summary>
public string Body
{get{return body;}}

/// <summary>
/// Emails de destino de uma copia da mensagem
/// </summary>
public string Cc
{get{return cc;}}

/// <summary>
/// Emails de destino de uma copia oculta da mensagem
/// </summary>
public string Bcc
{get{return bcc;}}

/// <summary>
/// Url base para os arquivos existentes no corpo da mensagem
/// </summary>
public string UrlContentBase
{get{return urlcontentbase;}}

/// <summary>
/// Url do conteudo da mensagem
/// </summary>
public string UrlContentLocation
{get{return urlcontentlocation;}}

#endregion

/// <summary>
/// Envia a mensagem
/// </summary>
public void Send()
{
MailMessage ShinjiMail = new MailMessage();
ShinjiMail.From = From;
ShinjiMail.To = To;
ShinjiMail.Subject = Subject;
ShinjiMail.Body = Body;
ShinjiMail.Cc = Cc;
ShinjiMail.Bcc = Bcc;
ShinjiMail.UrlContentBase = UrlContentBase;
ShinjiMail.UrlContentLocation = UrlContentLocation;

switch(Encoding)
{
case eEncoding.UTF7:
ShinjiMail.BodyEncoding = System.Text.Encoding.UTF7;
break;
case eEncoding.UTF8:
ShinjiMail.BodyEncoding = System.Text.Encoding.UTF8;
break;
case eEncoding.ASCII:
ShinjiMail.BodyEncoding = System.Text.Encoding.ASCII;
break;
default:
ShinjiMail.BodyEncoding = System.Text.Encoding.Default;
break;
}

switch
(Format)
{
case eFormat.Html:
ShinjiMail.BodyFormat = MailFormat.Html;
break;
default:
ShinjiMail.BodyFormat = MailFormat.Text;
break;
}

switch (Priority)
{
case ePriority.High:
ShinjiMail.Priority = MailPriority.High;
break;
case ePriority.Low:
ShinjiMail.Priority = MailPriority.Low;
break;
default:
ShinjiMail.Priority = MailPriority.Normal;
break;
}

if (Attachments != null)
{
MailAttachment MyAttachment = null;
foreach (string sSubstr in Attachments)
{
MyAttachment = new MailAttachment(sSubstr);
ShinjiMail.Attachments.Add(MyAttachment);
}
}

ShinjiMail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"%5D = Port;
ShinjiMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"%5D = 2;

if
(this.IsAuthenticatedServer)
{ShinjiMail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"%5D = 1;
ShinjiMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"%5D = User;
ShinjiMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"%5D = Pass;
}
SmtpMail.SmtpServer = SmtpServer;

try
{SmtpMail.Send(ShinjiMail);}
catch(Exception ex)
{throw ex;}

}
}
}

Beleza pessoal???
Espero que ajude no trabalho de vcs!!

[]’s
Shinji

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s