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
|
|