[ Foro de C# ]
tengo el siguiente codigo para enviar el correo pero el body del correo se envia vacio por favor ayuda
private void button2_Click(object sender, EventArgs e)
{
CNSueldo objn = new CNSueldo();
StringBuilder sb = new StringBuilder();
foreach (object item in listBox1.SelectedItems)
{
sb.Append(item.ToString() + ", ");
}
string resultado = sb.ToString();
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
msg.To.Add(txt1.Text);
msg.Subject = "Presupuesto";
msg.SubjectEncoding = System.Text.Encoding.UTF8;
//para copias
msg.Bcc.Add(UserLoginCache.Email);
msg.Body = Image.FromFile(;
msg.From = new System.Net.Mail.MailAddress(UserLoginCache.Email);
System.Net.Mail.SmtpClient cliente = new System.Net.Mail.SmtpClient();
cliente.Credentials = new System.Net.NetworkCredential("gmcoin11@gmail.com", "123789456963");
cliente.Port = 587;
cliente.EnableSsl = true;
cliente.Host = "smtp.gmail.com";
try
{
cliente.Send(msg);
MessageBox.Show("se envio correctamente");
try
{
txt1.Clear();
txt1.Visible = false;
listBox1.Items.Clear();
listBox1.Visible = false;
button2.Visible = false;
}
finally { }
}
catch (Exception)
{
MessageBox.Show("error al enviar");
}
}
}
Eso está incompleto. La línea del "Body" es claramente incorrecta:
msg.Body = Image.FromFile(;
Body debe ser un string. En tu caso deberias pasarle el contenido de la variable resultado:
msg.Body = resultado;
Por otro lado, para envio de e-mail utilizando el servidor de Google, lo recomendable (y más eficaz) es utilizar el puerto 465. Y, como lo que estas pasando es texto plano, podrias poner en false la codificacion HTML en el cuerpo del mensaje, para evitar inconsistencias:
cliente.Port = 465;
msg.IsBodyHtml - false;
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)