2008-12-14 19 views
6

Este es el código que he escrito:¿Cómo envío un mensaje de correo electrónico desde mi aplicación C#?

 MailMessage mail = new MailMessage("[email protected]", "[email protected]"); 

     mail.Subject = "This is a test!!"; 
     mail.Body = "testing..."; 

     SmtpPermission connectAccess = new SmtpPermission(SmtpAccess.Connect); 
     System.Console.WriteLine("Access? " + connectAccess.Access); 

     SmtpClient client = new SmtpClient("mail.myurl.com", 2525); 
     client.Send(mail); 

No está funcionando. Obtengo una excepción en la línea "cliente.Enviar (correo)" que dice "Buzón de correo no disponible. La respuesta del servidor fue (MYLOCALCOMPUTERNAME) [MI IP LOCAL]: actualmente 3045 no está autorizado a transmitir".

connectAccess.Access no retorno "Connect" (no estoy seguro si esto era necesario ... he añadido para iniciar el proceso de resolución de problemas.)

¿Quiere esto decir que mi máquina local tiene que ser configurado de alguna manera? ¿Qué sucede cuando despliegue mi aplicación en máquinas de otras personas? ¿Será necesario que haya configuración local allí? Solo estoy buscando crear un tipo de enlace "Enviar comentarios" desde mi aplicación.

(Nota: en mi aplicación real que estoy usando mis direcciones reales de correo electrónico, tanto en la "a" y "de" y mi smtp es realmente mi dirección SMTP en el lugar que aloja mi URL/sitio web)

¡Gracias!

-Adeena

Respuesta

3

Es la dirección de destino en la misma máquina que el servidor SMTP? Si no, esto explicaría un error de retransmisión.

El servidor SMTP que utiliza debe ser el destino final del mensaje de correo o el primer salto en el intercambio de correo. Por ejemplo, si está enviando correo a una dirección yahoo desde una dirección de Gmail, el primer servidor de correo que debe ver el mensaje debe ser su servidor de Gmail o el servidor de Yahoo. Los servidores intermedios rechazarán el mensaje porque tienen la retransmisión deshabilitada (para reducir el spam, etc.).

Si son el mismo host, ¿puede enviar el correo directamente de otra forma?

haga esta prueba a través de telnet para ver si su servidor SMTP se está comportando correctamente: http://www.messagingtalk.org/content/470.html

7

@ Michael: Gracias por el enlace. Es muy útil.

I think Descubrí mi problema. Necesité agregar las credenciales de inicio de sesión después de crear mi objeto "cliente". He añadido la siguiente línea:

client.Credentials = new System.Net.NetworkCredential("myloginat+myurl.com", "mypassword"); 

(lo siento - Tengo este hábito que después de buscar una respuesta en la web ya través de mis manuales de 2 horas, finalmente romper a publicar la pregunta y luego 5 minutos más tarde lo averiguo :) Creo que el hecho de escribir la pregunta me ayuda más que cualquier otra cosa)

Así que está funcionando ... aunque no voy a decir que entiendo todo sobre cómo y por qué funciona, así que espero encontrar algunos problemas cuando le doy mi programa a otros para que lo usen. es decir, ¿todos los que usan el programa que tiene conexión a Internet podrán abrir esta conexión SMTP a mi servidor? No sé la respuesta a eso ... Tendré que esperar, ver y aprender algo más.

Gracias! :)

-Adeena

+0

Algunos servidores SMTP requieren nombres de usuario y contraseñas, que es lo que usted cambió y resolvió el problema. Muchos servidores SMTP, por ejemplo mis ISP, no requieren contraseñas porque reconocen que la IP de origen proviene de la subzona de su ISP. – configurator

0

Compruebe su firewall. ¿Está abierto el 2525 post?

0
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; 
using System.Net.Mail; 

namespace SendMail 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       SmtpClient client = new SmtpClient("smtp.gmail.com", 25); 
       MailMessage msg = new MailMessage(); 

       NetworkCredential cred = new NetworkCredential("[email protected]", "password"); 
       msg.From = new MailAddress("[email protected]"); 
       msg.To.Add("[email protected]"); 
       msg.Subject = "A subject"; 
       msg.Body = "Hello,Raffi"; 

       client.Credentials = cred; 
       client.EnableSsl = true; 
       label1.Text = "Mail Sended Succesfully"; 
       client.Send(msg); 


      } 
      catch 
      { 
       label1.Text = "Error"; 
      } 
     } 



    } 
} 
Cuestiones relacionadas