Foros del Web » Programación para mayores de 30 ;) » .NET »

Enviar E-MAIL con c#

Estas en el tema de Enviar E-MAIL con c# en el foro de .NET en Foros del Web. Buenas, pues como lo dice el titulo estoy tratando de enviar un mail por C#. He seguido algunos tutoriales, pero ninguno ha funcionado - puede ...
  #1 (permalink)  
Antiguo 23/10/2008, 19:55
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 7 meses
Puntos: 0
Enviar E-MAIL con c#

Buenas, pues como lo dice el titulo estoy tratando de enviar un mail por C#. He seguido algunos tutoriales, pero ninguno ha funcionado - puede que esto se deba a que tratan en el Visual c# 2005, y yo tengo el 2008?

en fin, les muestro mi codigo..

Cita:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.Net.Mail;
using System.Net.Mime;
using System.Text.RegularExpressions;

namespace WoW_Launcher
{
public partial class Feedback : Form
{
public Feedback()
{
InitializeComponent();
}

private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}

// Aqui esta el boton que debe enviar el e-mail

private void btnSend_Click(object sender, EventArgs e)
{
MailMessage mail = new MailMessage();
mail.Subject = txtSubject.Text;
mail.Body = txtMessage.Text;
mail.To = "[email protected]";
mail.From = txtFrom.Text;


SmtpMail etcc..
}

}
}
Lo que marque en ROJO es basicamente lo que me falla. Espero que alguien sepa que falta o que he hecho mal..Yo creo que todo empieza con el tema del server SMTP para enviar correos (que por cierto no he creado), pero prefiero una opinion/respuesta profesional.

Cualquier duda o si necesitan una mejor explicacion porfavor avisar!
Muchas gracias,
Chris.
  #2 (permalink)  
Antiguo 24/10/2008, 06:32
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Enviar E-MAIL con c#

si no mal recuerdo mailMessage.To es una coleccion entonces necesitaras hacer

mailMessage.To.Add(new MailAddress("[email protected]"));
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 24/10/2008, 16:42
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Enviar E-MAIL con c#

Hola y muchas gracias nuevamente por tu ayuda..

pues añadi ese codigo en el metodo del btnSend en sustitucion del "mail.To =" y me subraya con una linea oleada azul la parte de "MailMessage.To" y ademas me da este error:

An object reference is required for the non-static field, method, or property 'System.Net.Mail.MailMessage.To.get'

gracias,
chris.
  #4 (permalink)  
Antiguo 24/10/2008, 16:44
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Enviar E-MAIL con c#

no, me malinterpretaste

debera queder asi

Código:
private void btnSend_Click(object sender, EventArgs e)
{
MailMessage mail = new MailMessage();
mail.Subject = txtSubject.Text;
mail.Body = txtMessage.Text;
mail.To.Add(new MailAddress("[email protected]"));
mail.From = txtFrom.Text;

SmtpMail etcc..
}
esa es la linea que cambia
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 24/10/2008, 17:29
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Enviar E-MAIL con c#

listo, mira consegui un pequeño tutorial, que explicaba un poco el framework 2.0 <- aparentemente esa es la version que tengo yo y los otros tutoriales andaban algo desactualizados..

en fin, usando el tutorial fui añadiendo las partes que me faltaban (ahora te pego el codigo para que veas), pero aun no me llega el e-mail.

como notaras añadi un codigo que es requerido por servidores que exigen autenticación.. el tutorial solo decia:
clienteSmtp.Credentials = new NetworkCredential("usuario", "contraseña");

pero no se que debe ir ahi. muchisisisimas gracias por todo tu apoyo, en serio te lo agradesco.

mi codigo para cualquier duda:

Cita:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.Net.Mail;
using System.Net.Mime;
using System.Text.RegularExpressions;
using System.Net;

namespace WoW_Launcher
{
public partial class Feedback : Form
{
public Feedback()
{
InitializeComponent();
}

private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}

private void btnSend_Click(object sender, EventArgs e)
{
MailMessage mail = new MailMessage();
mail.Subject = "WoWLauncher FEEDBACK" + txtSubject.Text;
mail.Body = txtMessage.Text;
mail.To.Add (new MailAddress("[email protected]"));
mail.From = new MailAddress(txtFrom.Text);

SmtpClient clienteSmtp = new SmtpClient("WIN02");

clienteSmtp.Credentials = new NetworkCredential("correo", "pass");

try
{
clienteSmtp.Send(mail);
}

catch (Exception ex)
{
Console.Write(ex.Message);
Console.ReadLine();
}

MessageBox.Show("Thank you! Your feedback was sent successfully.");
}

}
}

Última edición por crozer; 26/10/2008 a las 10:36
  #6 (permalink)  
Antiguo 25/10/2008, 17:59
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Enviar E-MAIL con c#

alguna ayudadita porfavor?
  #7 (permalink)  
Antiguo 26/10/2008, 06:42
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Enviar E-MAIL con c#

tu smtp client debe apuntar al servidor smtp que corresponda ,si quieres enviar gmail, pues apuntualo a smtp.gmail.com y agregale a smtp client el puerto correspondiente ( revisa aqui mismo todos los ejemplos de ello y si hay!!!).

si tu smtp es otro entonces a punta a la ip o nombre de la maquina correspondiente y el puerto de ese servidor de correo.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #8 (permalink)  
Antiguo 26/10/2008, 10:41
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Enviar E-MAIL con c#

Cita:
Iniciado por Peterpay Ver Mensaje
tu smtp client debe apuntar al servidor smtp que corresponda ,si quieres enviar gmail, pues apuntualo a smtp.gmail.com y agregale a smtp client el puerto correspondiente ( revisa aqui mismo todos los ejemplos de ello y si hay!!!).

si tu smtp es otro entonces a punta a la ip o nombre de la maquina correspondiente y el puerto de ese servidor de correo.
en otras palabras, me estas diciendo que bajo "usuario" debe ir "smtp.gmail.com", pero aun no entiendo que debe ir bajo "contraseña" :S

disculpa mi ignorancia, pero es la primera vez que escucho algo sobre servidores smtp =/
  #9 (permalink)  
Antiguo 26/10/2008, 10:43
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Enviar E-MAIL con c#

no no , en smtpclient tienes win02, y si tu pretendes enviar usando tu cuenta de gmail necesitas usar el smtp de gmail y el usuario y password pues son tus credenciales de tu cuenta.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #10 (permalink)  
Antiguo 26/10/2008, 11:15
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Enviar E-MAIL con c#

Aha.. Pero yo no se de que correo será enviado el e-mail.

Cita:
si tu pretendes enviar usando tu cuenta de gmail necesitas...
Yo quiero que los correos LLEGUEN a mi gmail, pero quiero que cualquier persona que use mi programa pueda enviarlo..

Estoy confudido >.<
  #11 (permalink)  
Antiguo 26/10/2008, 11:30
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Enviar E-MAIL con c#

si mucho, si no sabes de que correo enviaras pues eso es mas problema de tu aplicación , decidir que host: smtp.algundominio.com
puerto: 25 o 465 o 578 o que se yo.
usuario : tu usuario
password : tu password

y si quieres que siempre te lleguen los correos a tu correo de gmail tienes la opción de enviartelo como copia oculta (BCC o CC) pero eso no es ningún problema.

Pd: que exactamente haces, un cliente de correo como outlook o eudora o algo similar. ??
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #12 (permalink)  
Antiguo 26/10/2008, 11:38
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Enviar E-MAIL con c#

no en verdad es algo mucho mas simple. es una aplicacion para un juego, pero quiero hacer funcionar la muy util herramienta "feedback", de manera que los usuarios puedan enviarme ideas y/o errores.

o sea, si encontraron 1 error o tienen una mejora en mente, me lo puedan enviar mediante este item dentro del proyecto.

Cita:
y si quieres que siempre te lleguen los correos a tu correo de gmail tienes la opción de enviartelo como copia oculta (BCC o CC) pero eso no es ningún problema.
eso suena como mi solucion??
  #13 (permalink)  
Antiguo 26/10/2008, 11:46
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Enviar E-MAIL con c#

entonces es un simple formulario de contacto con mas info como el tipo de bug y demás pero si consideras eso necesitas tener las credenciales de otro dominio centralizado fuera de la maquina de tu usuario y listo algo publico como usar el servidor de correo de un dominio (yahoo, gmail etc.) y envíes tu información pero investiga sea cual sea tu servidor de correo toda la información necesaria por el smtp client y tus credenciales y listo.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #14 (permalink)  
Antiguo 26/10/2008, 11:52
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Enviar E-MAIL con c#

entonces en ves de WIN02 debo escribir el servidor smtp de por ejemplo GMAIL, y en las credenciales que datos deberia poner? los mios?
  #15 (permalink)  
Antiguo 26/10/2008, 11:55
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Enviar E-MAIL con c#

Cita:
Iniciado por crozer Ver Mensaje
entonces en ves de WIN02 debo escribir el servidor smtp de por ejemplo GMAIL, y en las credenciales que datos deberia poner? los mios?
PD: seria posible que te conectes a MSN?
mi correo es [email protected]
  #16 (permalink)  
Antiguo 26/10/2008, 12:02
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Enviar E-MAIL con c#

Revisa algo como esto http://www.probandocodigo.com/2007/1...esde-c_02.html
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #17 (permalink)  
Antiguo 26/10/2008, 13:05
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Enviar E-MAIL con c#

lo revise, y funciona a la perfeccion.. el problema es que, solo si tienes un correo GMAIL.
como haria para que cualquiera pueda enviar el mail?

puedo hacer esto (para usar varios servidores smtp a la vez?):
-------------------------------------------------
System.Net.Mail.SmtpClient smtpMail = new System.Net.Mail.SmtpClient("smtp.gmail.com, smtp.hotmail.com, smtp.yahoo.com");
-------------------------------------------------

en otras palabras, puedo agregar smtp.hotmail.com y smtp.yahoo.com entre parentesis junto al smtp.gmail.com?? separados por comas, punto y comas.. nose. se podra?

Última edición por crozer; 26/10/2008 a las 14:33
  #18 (permalink)  
Antiguo 26/10/2008, 14:35
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: Enviar E-MAIL con c#

no, no es así, tienes que hacer una especie de switch entre tipos de proveedores pero entonces esto si esto no es un cliente de mail como outlook porq te preocupa quien enviara que? , si tu aplicación solo necesita que envíe correos desde el cliente a tu cuenta x como [email protected] a [email protected] , así que necesitaras poder parametrizar todas la configuraciones posibles.

evalua bien que quieres parece que te confundes con tu necesidad mas que con la accion a realizar y no es tan complicado.

hagamos un supuesto

si tu requieres el usuario y password del 3ro para enviar un bug, yo como usuario no te enviaría nada porque no es seguro para mis credenciales.

pero si tienes definida en tu aplicación las credenciales de tu correo que solo envía correos desde la maquina de tu usuario con la info de el a la tuya tiene mas sentido.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #19 (permalink)  
Antiguo 26/10/2008, 15:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 79
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Enviar E-MAIL con c#

si, disculpame.

mira, NADIE pondria sus datos en un programa cualquiera, por lo tanto lo que dices tiene mucho sentido. Lo que yo quiero es que mediante MIS credenciales se envie el correo a [email protected]

mi idea es: hacer que las credenciales por default sean "[email protected]" y "mi contraseña". Entonces, el email se envia mediante esas credenciales al servidor smtp.gmail.com ..

creo que a eso te refieres, cierto? mira aca el codigo que voy teniendo hasta ahora, creo que solo falta añadir o quitar alguna cosita y funcionara asi como dices.

Cita:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Mail;

namespace WoW_Launcher
{
public partial class Feedback2 : Form
{
public Feedback2()
{
InitializeComponent();
}

private void Feedback2_Load(object sender, EventArgs e)
{

}

private void txtBody1_TextChanged(object sender, EventArgs e)
{

}

private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}

private void btnSend_Click(object sender, EventArgs e)
{
string From;
string To;
string Message;
string Subject;
System.Net.Mail.MailMessage Email;

// Variables
From = this.txtFrom.Text;
To = this.txtTo.Text;
Message = this.txtBody.Text;
Subject = this.txtSubject.Text;

// Smtp SERVER
Email = new System.Net.Mail.MailMessage(From,To,Subject,Messag e);
System.Net.Mail.SmtpClient smtpMail = new System.Net.Mail.SmtpClient("smtp.gmail.com");
Email.IsBodyHtml = false;
smtpMail.EnableSsl = true;

smtpMail.UseDefaultCredentials = true;

smtpMail.Host = "smtp.gmail.com";
smtpMail.Port = 25;
smtpMail.Credentials = new System.Net.NetworkCredential(this.txtFrom.Text, txtPass.Text);

//Enviar EMAIL
smtpMail.Send(Email);
}
}
}
lo que marque en negrita puede ser la solucion?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:25.