🔥 Articles, eBooks, Jobs, Columnist, Forum, Podcasts, Courses 🎓



Enviando E.mail com Anexo

Ajudando a montar um framework para envio de e-mail, saiba como.



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.

Subscribe ecode10.com

Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.
You can cancel anytime.

Log In








Top