Enviar un archivo por eMail

by Valeriano Tortola 1. septiembre 2007 18:18

Siguiendo la línea del artículo anterior donde explicaba como subir un archivo vía FTP, voy a mostrar ahora como enviar un archivo vía email con las clases contenidas en System.Net.Mail. Esta funcionalidad, puede ser más útil para informar de excepciones en una aplicación instalada en el cliente, comunicar alguna eventualidad, etc.. etc…

Ojo que esta no es la implementación de un servidor SMTP y que solo actúa como cliente de correo en modo de envio, por lo que es necesario que tengamos una cuenta de correo y un acceso SMTP (Hotmail no tiene SMTP gratuito, Gmail si, ó usa tu propio servidor si lo tienes).

El ejemplo es bastante claro y sencillo:

 

public void EnviarArchivoEmail(string FilePath, 
    string SmtpServer, int PortNum, NetworkCredential Auth, 
    MailAddress From, params MailAddress[] To)
{
    // Configuramos nuestro servidor SMTP
    SmtpClient SC = new SmtpClient(SmtpServer, PortNum);
 
    // Conexión segura (si la soporta el servidor)
    // Imprescindible para Gmail.
    SC.EnableSsl = false;
    
    // Creamos el mensaje de email
    using (MailMessage message = new MailMessage())
    {
        // Añadimos el remitente
        message.From = From;
 
        // Añadimos los destinatarios.
        foreach (MailAddress ma in To)
            message.To.Add(ma);
        
        string file = Path.GetFileName(FilePath);
 
        // Asunto
        message.Subject = "Enviando " + file;
 
        // Cuerpo
        message.Body =string.Format("Archivo {0} enviado el {1} a las {2}.",
            file,DateTime.Now.ToShortDateString(),
            DateTime.Now.ToShortTimeString());
 
        // Agrego el fichero como archivo adjunto
        message.Attachments.Add(new Attachment(FilePath));
 
        // Indico mis credenciales para autenticarme
        SC.Credentials = Auth;
 
        // Indico el modo de envio.
        SC.DeliveryMethod = SmtpDeliveryMethod.Network;
 
        // Y el timeout
        SC.Timeout = 10000;
 
        // Enviar eMail
        SC.Send(message);
    } 
}

Definiendo el destinatario como un array params, podemos añadir los destinatarios que creamos oportunos en la misma invocación de la función. El uso, más sencillo aún:

EnviarArchivoEmail(@"C:\Archivo.txt", // El archivo 
    "mail.mismtp.net", 25, // El servidor
    new NetworkCredential("Remitente@mismtp.net", @"mipassword"), //Mis credenciales
    new MailAddress("Remitente@mismtp.net", "Valeriano"),  // Remitente
    new MailAddress("destinatario1@gmail.com", "Destinatario 1"), // Destinatario 
    new MailAddress("destinatario2@gmail.com","Destinatario 2")); // Destinatario 

Tags: , ,

.NET 2.0 | C# 2.0

Comentarios

18/09/2007 19:56:04 #

marina

coectate de una vezzzzzzzzzzk me aburrrrrrrrroooooooo




antoni er presiiii

aaaaaaaaaaaaaaaaaaauuuuuuuuuuuuuuuuuuuuu

marina |

20/09/2007 0:07:14 #

pingback

Pingback from einicio.com

Enviar un Email

einicio.com |

Comentarios no permitidos