2009-09-29 9 views
7

No puedo enviar correos electrónicos a direcciones de dominio externo como '[email protected]' utilizando el código siguiente.No se pueden enviar correos electrónicos al dominio externo mediante SMTP

SmtpClient smtpClient = new SmtpClient(smtpMailServer); 
smtpClient.UseDefaultCredentials = true; 
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
smtpClient.EnableSsl = true; 

//Sending mail. 
smtpClient.Send(mailMessage); 

me sale una excepción -

Mailbox unavailable. The server response was: 5.7.1 Unable to relay for [email protected]

Si cambio la deliveryMethod a -

smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 

soy capaz de enviar los correos electrónicos en mi máquina local. Pero falla en la planta de producción con una excepción -

Cannot get IIS pickup directory

¿Me podría sugerir qué hacer?

+0

¿Se resolvió esto alguna vez? Estoy teniendo exactamente el mismo comportamiento. – Kevin

+0

encontró alguna solución? –

Respuesta

1

Por lo general, debe autenticarse con el servidor de correo externo utilizando un nombre de usuario/contraseña. Como está utilizando un servidor externo, esto no sabrá las credenciales que está aprobando. Este puede ser tu problema.

1

Si se va a buscar el registro MX para la dirección de destino (en su ejemplo, es asdf.com) y luego usar esa propiedad para la serie de SmtpClient, se debe aceptar el mensaje para la entrega sin autenticación ya que es para un usuario local. Esto no es fácil de hacer, ya que System.Net no proporciona una clase de DNS administrado que pueda devolver registros MX, pero puede P/invocar código no administrado para hacerlo. De lo contrario, deberá asegurarse de que cualquier servidor SMTP al que se conecte se retransmita por usted y luego configure la propiedad Credenciales de SmtpClient con las credenciales apropiadas para conectarse a ese servidor. Establecer DeliveryMethod en PickupDirectoryFromIIS solo escribe un archivo en el directorio de recogida de IIS, por lo que solo está escribiendo un archivo, no está haciendo un envío real.

+0

+1 para saber cómo funciona el correo electrónico. Además, tenga en cuenta que hay otras cosas que puede necesitar además de enviar directamente al servidor para ese dominio (búsqueda MX). En su mayoría debido a la protección antispam, existen muchas reglas en el mundo del correo electrónico. Busque en "Id. Del remitente", "SPF" y "Encabezado del remitente SMTP" para que pueda comenzar, para cualquiera que desee seguir esta ruta. – eselk

4

tuve este problema y autenticar fijo que ver más abajo:

 SmtpClient client = new SmtpClient(EmailServer, 25); 
     var SmtpUser = new System.Net.NetworkCredential("domain\\username", "password"); 
     client.Credentials = SmtpUser; 
     client.DeliveryMethod = SmtpDeliveryMethod.Network; 

tuve que usar el doble barra desde una barra es el carácter de escape a fin de utilizar dos para que funcione.

0

Me enfrenté a este problema, que resolví agregando un dominio con "* .com" como nombre de dominio y tipo como "remoto", en IIS 6.0 Manager/SMTP Virtual Server/Domains.

Aunque en mi caso el servidor SMTP permitió el acceso anónimo.

Cuestiones relacionadas