2009-10-13 42 views
21

Estoy intentando configurar el servidor SMTP en IIS para enviar correos. El servidor SMTP está destinado a ser utilizado por el código ASP.NET en C#.Enviar correo usando SMTP localhost

Anteriormente estaba usando gmail smtp en donde proporcioné smtp.gmail.com como host con puerto seguro y mi gmail uid/pwd. Eso funcionó bien. Aquí está el código usado para hacer eso.

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.UseDefaultCredentials = false; 
smtpClient.Host = "smtp.gmail.com"; 
smtpClient.Port = 587; 
smtpClient.Credentials = new NetworkCredential(uname,pwd); 
smtpClient.EnableSsl = true; 
smtpClient.Send(mailMessage); 

Ahora tengo la intención de utilizar el servidor SMTP en IIS localhost, qué valores deben estar dando i para los parámetros UseDefaultCredentials y credenciales. Voy a asignar información falsa a EnableSsl ya que está en el puerto 25.

Además, ¿cuál podría ser la configuración del servidor virtual SMTP más simple?

Respuesta

14

Creo que en localhost puede utilizar:

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.UseDefaultCredentials = true; 
smtpClient.Send(mailMessage); 
+0

No funciona. Recibo el error "Host SMTP desconocido" – lenden

+0

¿Ha iniciado el servicio IIS SMTP? – Natim

+0

sí, pero todavía no funciona (tengo win8, pero según tengo entendido, activé todo bien). debería escribir smth como "" a la configuración web? todavía es "host smtp desconocido", si solo escribo estas 3 líneas – lenden

3

Depende de cómo configure el servidor smtp. Es posible que no necesite usar ninguna credencial y simplemente configure el servidor para que solo acepte las conexiones locales.

+0

@ Joel: Mi configuración del servidor SMTP: Autenticación: El acceso anónimo dirección IP: Todos sin asignar Seguridad saliente: El acceso anónimo curioso, si se trata de una configuración correcta para el envío de correos sin credenciales. – pencilslate

+0

Esa es una pregunta para serverfault. –

26

Cuando se utiliza el servicio SMTP local de IIS, establezca el deliveryMethod a PickupDirectoryFromIis. Por ejemplo:

smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 

Esto omite por completo la capa de red y escribe los mensajes directamente en el disco. Es mucho más rápido que pasar por el protocolo SMTP hablador.

Cuando se utiliza el código anterior, significa que usted puede deshacerse de esta parte de su código:

smtpClient.UseDefaultCredentials = false; 
smtpClient.Host = "smtp.gmail.com"; 
smtpClient.Port = 587; 
smtpClient.Credentials = new NetworkCredential(uname,pwd); 
smtpClient.EnableSsl = true; 
+4

Esta es la respuesta correcta para usar el directorio de recogida IIS local. Como solo escribe un archivo, no usará ninguna credencial e IIS simplemente lo enviará por usted. –

1

Tx Natim, lo que usted dice que funcionó para mí. Haga que nuestra aplicación de intranet utilice la autenticación integrada con nuestro servidor de intercambio 2007 ahora:

Dim msg As New MailMessage() 
Dim smtp As SmtpClient 

msg.From = New MailAddress(strFrom) 
msg.To.Add(strTo) 
msg.Subject = strSubject 
msg.Body = strBody 

smtp = New SmtpClient("ServerName") 
smtp.UseDefaultCredentials = True 
smtp.Send(msg) 
2

¿Ha intentado habilitar el relé?

Buscar el administrador de IIS6 (he encontrado que la búsqueda de IIS puede arrojar 2 resultados) vaya a las propiedades del servidor SMTP, luego 'Acceso' y luego presione el botón de retransmisión.

A continuación, puede seleccionar todos o sólo permiten ciertas ip de como 127.0.0.1

SMTP Relay

+0

Estoy usando CDOSYS y desde el servidor donde está configurado este servidor virtual, los correos electrónicos se envían sin problemas, pero cuando pruebo mi utilidad desde la estación de trabajo, aparece el mensaje "El transporte no se puede conectar al servidor". ¿alguna idea? lo que necesito cambiar en mi código para que la estación de trabajo también pueda usar este servidor SMTP virtual y pueda enviar correos electrónicos. – elmo

0

Si desea probar los correos electrónicos en localhost, sólo tiene que descargar instalar la herramienta Papercut https://papercut.codeplex.com/

y el cambio nombre de host a localhost como a continuación. Papercut captura todos los correos electrónicos que envían usando localhost.

smtpClient.UseDefaultCredentials = false; 
    smtpClient.Host = "localhost"; 
    smtpClient.Port = 587; 
    smtpClient.Credentials = new NetworkCredential(uname,pwd); 
    smtpClient.EnableSsl = true; 
+0

también smtp4dev es un servidor smtp local para desarrolladores. – Birey

Cuestiones relacionadas