¿Como enviar correos automáticamente desde winform c#?

Estoy haciendo una aplicación en windows form y necesito enviar correos electrónicos a los usuarios asociados con ese evento un día antes de la fecha estipulada como podría hacerlo

2 respuestas

Respuesta
1

Que tal disculpa la demora de la anterior pregunta estaba fuera de la ciudad sin internet ni nada, mira para hacer eso te dejo un código que utilizo yo reemplaza las variables por valores tuyos osea strings o ints y le pruebas saludos y suerte cualquier cosa me avisas

/// <summary>
/// Enviar Correo
/// </summary>
/// <param name="p_para">Destinatario</param>
/// <param name="p_titulo">Titulo</param>
/// <param name="p_mensaje">Mensaje</param>
/// <param name="p_prioridad">Prioridad</param>
/// <param name="p_listaAdjuntos">Lista de objetos de la clase Archivo (llenar string nombre y byte[] contenido)</param>
/// <param name="p_cuerpoHTML">True si el cuerpo es en formato HTML</param>
/// <returns>True si fue exitoso el envio de correo</returns>
public string Enviar(string p_para, string p_titulo, string p_mensaje, MailPriority p_prioridad, List<Archivos> p_listaAdjuntos, bool p_cuerpoHTML, string p_strPlantilla)
{
try
{
clienteSMTP = new SmtpClient();
NetworkCredential cre = new NetworkCredential(m_CorreoSaliente, m_passwordCorreoSaliente);
clienteSMTP.UseDefaultCredentials = true;
clienteSMTP.Credentials = new NetworkCredential(m_CorreoSaliente, m_passwordCorreoSaliente);
clienteSMTP.EnableSsl = true;
clienteSMTP.Host = m_host;
clienteSMTP.Port = m_puerto;
// Envio de datos a plantilla HTML
if (p_cuerpoHTML)
{
Dictionary<string, string> data = new Dictionary<string, string>();
data.Add("<<mail.titulo>>", p_titulo);
data.Add("<<mail.mensaje>>", p_mensaje);
MailDefinition md = new MailDefinition();
// Por alguna razon ya no funciono con hilos -> md.BodyFileName = "~/Plantilla.htm";
md.BodyFileName = p_strPlantilla;//strPathPlantilla; //"c:\\Plantilla.htm";
md.From = m_CorreoSaliente;
correo = md.CreateMailMessage(p_para, data, new LiteralControl());
}
else
{
correo = new MailMessage(m_CorreoSaliente, p_para, p_titulo, p_mensaje);
}
correo.Subject = p_titulo;
correo.IsBodyHtml = p_cuerpoHTML;
correo.Sender = new MailAddress(m_CorreoSaliente, displayName);
correo.Priority = p_prioridad;
// Por cada item adjunto reconstruir archivo en memoria
if (p_listaAdjuntos != null)
{
foreach (Archivos item in p_listaAdjuntos)
{
// Obtener el archivo adjunto en base
Stream f = item.ObtenerArchivoStream();
if (f != null)
{
// Validar si esta dentro del límite de tamaño
if (f.Length <= 20000)
{
Attachment adjunto = new Attachment(f, item.Nombre);
correo.Attachments.Add(adjunto);
}
else
return "Error en envio: Tamaño fuera de limite en archivo adjunto: " + item.Nombre;
}
else
return "Error en envio: Archivo a adjuntar no existe en la ruta especificada: " + item.Nombre;
}
}
// Envio efectivo del correo
clienteSMTP.Send(correo);
correo.Dispose();
return "OK";
}
catch (Exception ex)
{
Log.Guardar(" EnvioCorreo - Enviar: " + ex.InnerException + " -> " + ex.Message + " NO enviado ERROR en:" + ex.StackTrace, Log.TipoLog.Auditoria, DateTime.Now, "EnvioCorreo");
return ex.Message;
}
}

hola una pregunta que referencias utilizas en este codigo

Hay si perdón ya te las pongo

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Net.Mail; using System.Net; using System.Web.UI.WebControls; using System.Web.UI; using System.IO; using System.Configuration; using System.Security.Cryptography.X509Certificates; using System.Net.Security;

que pena otra vez yo y mis preguntas pero que framework de visual studio es 2.0, 3.0, o 3.5

Ahhh no tranquilo no pasa nada todo bien, preguntando se aprende ya es framework 2.0 eso ahí cualquier cosa me avisas, pero creo que si vale para 4.0, 3.0 y 3.5

Respuesta

Que tal yo uso este código

Librerías

using System.Net.Mail;
using System.Net.Mime;using System.Net.Mail;
using System.Net.Mime;

Declaro las variables

private string To;
private string Subject;
private string Body;

private MailMessage mail;

private string To;
private string Subject;
private string Body;

private MailMessage mail;

if (!(cmbPersonal.Text.Trim() == ""))
{
To = cmbPersonal.Text;
Subject = txtAsunto.Text;
Body = txtMensaje.Text;

mail = new MailMessage();
mail.To.Add(new MailAddress(this.To));
mail.From = new MailAddress("tu_correo");
mail.Subject = Subject;
mail.Body = Body;
mail.IsBodyHtml = false;

//if (!(archivoAdjTxt.Text.Trim() == ""))
//{
// Data = new Attachment(archivoAdjTxt.Text, MediaTypeNames.Application.Octet);
// mail.Attachments.Add(Data);
//}

SmtpClient client = new SmtpClient("smtp-mail.outlook.com");
using (client)
{
client.Credentials = new System.Net.NetworkCredential("tucorreo", "Constraseña");
client.EnableSsl = true;
client.Send(mail);
}
MessageBox.Show("Mensaje enviado Exitosamente");
}

if (!(cmbPersonal.Text.Trim() == ""))
{
To = cmbPersonal.Text;
Subject = txtAsunto.Text;
Body = txtMensaje.Text;

mail = new MailMessage();
mail.To.Add(new MailAddress(this.To));
mail.From = new MailAddress("[email protected]");
mail.Subject = Subject;
mail.Body = Body;
mail.IsBodyHtml = false;

//if (!(archivoAdjTxt.Text.Trim() == ""))
//{
// Data = new Attachment(archivoAdjTxt.Text, MediaTypeNames.Application.Octet);
// mail.Attachments.Add(Data);
//}

SmtpClient client = new SmtpClient("smtp-mail.outlook.com");
using (client)
{
client.Credentials = new System.Net.NetworkCredential("[email protected]", "Password02");
client.EnableSsl = true;
client.Send(mail);
}
MessageBox.Show("Mensaje enviado Exitosamente");
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas