Enviando E-mail com Anexo


por Mauricio Junior em 1/1/2011 0



Hoje muitos aplicativos precisam enviar emails de forma automática e com anexo. Hoje vou mostrar como enviar e-mail de duas maneiras diferentes. Foi colocado também o campo de cópia.

Usado: C#.NET, Visual Studio 2010, Funciona em qualquer plataforma .NET.

Vou partir do pressuposto que você já conhece como mandar e-mail via C#.NET. Mesmo assim vou explicar algumas informações importantes. Vou utilizar a maneira nova de enviar e-mail, muitos ainda usam a velha maneira e para isso é necessário importar a classe using System.Net.Mail;.

 Para mandar e-mail, você precisa colocar o servidor de SMTP. Se o envio de e-mail for interno, você pode utilizar um número de ip da sua empresa. No caso de envio externo, é necessário colocar o endereço que o servidor de hospedagem te passa. Por exemplo: mail.seuhost.com.br ou smtp.seuhost.com.br.

Neste primeiro exemplo, o arquivo anexo é adicionado passando apenas o endereço atribuído. (Code 1.1)

 

public static void sendMail(string server, string From, string to, string subject, string body, string Cc, string fileAttachment)

        {

            SmtpClient smtp = new SmtpClient(server);

            MailMessage mailSend = new MailMessage();

            mailSend.From = new MailAddress(From.Replace(';', ','));

            mailSend.To.Add(to.Replace(';', ','));

            if (!String.IsNullOrEmpty(Cc))

                mailSend.CC.Add(Cc);

            mailSend.Subject = subject;

            mailSend.SubjectEncoding = System.Text.Encoding.UTF8;

            mailSend.Body = body;

            mailSend.BodyEncoding = System.Text.Encoding.UTF8;

            mailSend.IsBodyHtml = true;

            mailSend.Attachments.Add(new Attachment(fileAttachment));

            smtp.Send(mailSend);

        }

 

Code 1.1

Note que se foi passado pelo usuário “;” em vez de vírgula entre os e-mails, o código faz um replace para “vírgula”. A primeira linha foi atribuir o nome do servidor SMTP, depois atualizar os endereços, colocar o corpo para HTML e na penúltima linha anexar o endereço do arquivo passado. Por final, o e-mail é enviado com o comando Send. 

O segundo exemplo, o anexo é colocado passando como parâmetro o tipo FileStream. Code 1.2.

 

public static void sendMail(string server, string From, string to, string subject, string body, string Cc, FileStream fileStream)

        {

            SmtpClient smtp = new SmtpClient(server);

            MailMessage mailSend = new MailMessage();

            mailSend.From = new MailAddress(From.Replace(';', ','));

            mailSend.To.Add(to.Replace(';', ','));

            if (!String.IsNullOrEmpty(Cc))

                mailSend.CC.Add(Cc);

            mailSend.Subject = subject;

            mailSend.SubjectEncoding = System.Text.Encoding.UTF8;

            mailSend.Body = body;

            mailSend.BodyEncoding = System.Text.Encoding.UTF8;

            mailSend.IsBodyHtml = true;

            mailSend.Attachments.Add(new Attachment(fileStream, "attachment"));

            smtp.Send(mailSend);

        }

 

Code 1.2

Note que os dois códigos estão bem parecidos, o que muda mesmo é o parâmetro de entrada para anexar alguma coisa no e-mail. Esse código pode te ajudar muito no momento de mandar e-mail, porém só pode ser anexado um documento ou arquivo. Se quiser anexar mais de um, é necessário criar array de filestream. 

A minha dica aqui é, crie um framework ou dll que tenha os dois métodos dentro, assim o mesmo arquivo ou dll pode ser usado em qualquer aplicativo. Bom, fico por aqui e qualquer dúvida pode entrar em contato pelo site.

voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Windows Form - Retornando valor entre formulários
Trabalhando com Sessão dentro do Windows Forms
Sistema de Login com ASP 3.0 usando três camadas – Parte I
Visual SourceSafe 2 / 3 parte
Como fazer uma enquete - parte 1
Microsoft Rolls Out Major Xbox Software Update
Flickr para Windows 7 e Windows Phone 7
Loja Apple (a2you.com.br) feita em .NET (Microsoft)
Vídeo - Conecte
M-Payment com Google Wallet
Criando Alias no Pacote
Vídeo: Imagem Efeito
Windows Phone 7 Action Pack - Vídeo Tutorial
Tata Motors (Grupo TCS)
Misturando dados
Vídeo - Google Earth Live em tempo real
Atalho novo, formatar e concatenar usando Visual Studio .NET 2010
Plataforma Web ou Windows Forms ?
Como utilizar CSS no VS 2003
Adicionando Ícones no Windows Forms
Adicionando Menu no DataGridView
Anime-se com o Silverlight
Você tem boa postura no trabalho?
Vídeo: Série Atlas.NET - Parte III
Criando RSS
Sistema de Controle de Gasolina Mobile - iGas
Fazer Log, precisa ou não precisa?
Projeto Natal é mostrado para a mídia
Alongar é preciso
ASP.NET 2.0 - FileUpload
Construindo o Windows 8
Skyfire - browser mobile
Método SHA512
Sort no GridView sem ir ao banco de dados novamente
Cookies