with tool test full dev check .net testing smtp

tool - Prueba de SMTP con.net



test smtp cmd (16)

Como señaló Sean Carpenter, papercut.codeplex.com es una poderosa solución para el desarrollo local. Sin embargo, si también ejecuta un servidor de ensayo o prueba, mailtrap.io puede ser una solución más simple en general, porque puede usar el mismo enfoque para sus entornos de desarrollo y prueba.

Necesito configurar un servidor SMTP para probar mi sitio web que envía correos electrónicos (para confirmación de registro, etc.).

Realmente no quiero que se envíe el correo electrónico, solo quiero asegurarme de que mi código sea correcto. Así que quiero poder verificar que el correo electrónico esté en una carpeta de cola, por ejemplo.

¿Alguien puede recomendar un servidor SMTP que sea fácil de configurar?


Creo que la entrada en el blog A Simple SMTP Server Mock para .NET le ofrece lo que necesita: un simulador de servidor SMTP

Una simulación de servidor SMTP es básicamente un servidor SMTP falso que se puede usar para probar unidades de aplicaciones que envían mensajes de correo electrónico.

Además, una búsqueda en google para smtp mock server le proporcionará una selección de servidores SMTP para fines de prueba. Me gusta:


El servidor DevNull SMTP registra todos los detalles sangrientos sobre la comunicación entre el cliente y el servidor SMTP. Parece que sería útil si intentara diagnosticar por qué su código de envío no funcionaba.

Está escrito en Java y se implementa como un archivo ejecutable. El código fuente no parece estar disponible.


El proyecto smtp4dev es otro servidor SMTP ficticio. Me gusta porque tiene una interfaz de usuario agradable y simple que registra los mensajes y le permite ver el contenido de los mensajes recientes. Escrito en C # con un instalador de MSI. El código fuente está disponible.


En .NET, SmtpClient se puede configurar para enviar correos electrónicos colocándolos en un directorio de recogida.

El constructor predeterminado de SmtpClient toma su configuración de app.config, por lo que para un entorno de prueba podemos configurarlo de la siguiente manera.

<configuration> <system.net> <mailSettings> <smtp deliveryMethod="specifiedPickupDirectory"> <specifiedPickupDirectory pickupDirectoryLocation="path to a directory" /> </smtp> </mailSettings> </system.net> </configuration>

Referencia de MSDN: elemento app.config mailSettings http://msdn.microsoft.com/en-us/library/w355a94k.aspx



Para .NET chicos por ahí. Manteniéndolo simple.

Estábamos investigando esto y luego uno de los desarrolladores recordó la configuración de configuración que le permite anular la forma en que se envían los correos electrónicos.

Esto creará un archivo por correo electrónico y lo dejará en paz.

<system.net> <mailSettings> <smtp deliveryMethod="SpecifiedPickupDirectory"> <specifiedPickupDirectory pickupDirectoryLocation="//SharedFolder/MailDrop/" /> </smtp> </mailSettings> </system.net>


Según muchas de las otras sugerencias, una herramienta gratuita que he usado bastante: http://www.toolheap.com/test-mail-server-tool/

No es realmente para TDD, pero es útil en las pruebas manuales, ya que puede mostrar una ventana de Outlook expreso con cada correo electrónico que se envíe.




También está Papercut que es un servidor SMTP que recibirá los mensajes pero no los entregará en ningún lugar (lo que le permite asegurarse de que se envíen correctamente). Los mensajes recibidos son visibles en una GUI pequeña y también se escriben en un directorio.



Tenga en cuenta que la clase SmtpClientWrapper propuesta por tvanfosson necesita la importantísima palabra clave "virtual" en su declaración del método Send; de lo contrario, está de regreso en el mismo barco que intenta simular el SmtpClient directamente.


Una forma alternativa de hacerlo es crear un contenedor alrededor del SmtpClient que implemente la misma interfaz. Luego, inyecta y usa el contenedor en tu clase. Al hacer pruebas unitarias, puede sustituir un contenedor simulado que tenga expectativas para las llamadas y respuestas al método.

EDITAR : El contenedor es necesario (para RhinoMocks, al menos) porque SmtpClient no se deriva de una interfaz y no tiene métodos virtuales. Si usa un marco de simulación que puede simular una clase directamente sin métodos virtuales, puede omitir el envoltorio e inyectar el simulacro de SmtpClient directamente.

public class SmtpClientWrapper { private SmtpClient Client { get; set; } public SmtpClientWrapper( SmtpClient client ) { this.Client = client; } public virtual void Send( MailMessage msg ) { this.Client.Send( msg ); } ... } public class MyClass { private SmtpClientWrapper Client { get; set; } public MyClass( SmtpClientWrapper client ) { this.Client = client; } public void DoSomethingAndNotify() { ... this.Client.Send( msg ); } }

Probado (con RhinoMocks) como:

public void DoSomethingAndNotifySendsAMessageTest() { SmtpClientWrapper client = MockRepository.GenerateMock<SmtpClientWrapper>(); client.Expect( c => c.Send( new MailMessage() ) ).IgnoreArguments(); MyClass klass = new MyClass( client ); klass.DoSomethingAndNotify(); client.VerifyAllExpectations(); }



también está mi propio http://ssfd.codeplex.com/ que es un emulador SMTP de fuente abierta. Recibe el correo electrónico y los coloca en una carpeta a la que se puede acceder mediante un icono de tarea