Intente conectarse al puerto SMTP y asegúrese de obtener una línea que comienza con "220" y contiene las letras "SMTP". Una respuesta típica ejemplo sería:
220 prod.monadic.cynic.net ESMTP Postfix (2.5.5)
entonces ser educado y enviar "QUIT
\ r \ n" para colgar.
Puede hacer algunas pruebas adicionales, si lo desea, como las pruebas de que el usuario probablemente pueda entregar mensajes. Para esto, enviaría un comando HELO con su nombre de host (o cualquier cadena, realmente), un comando MAIL FROM
usando la dirección de correo electrónico del usuario, y un RCPT TO:<[email protected]>
. La mayoría de los servidores en ese momento le dirán si la retransmisión no está permitida. (Supongo que está haciendo esto desde la computadora desde la que luego enviará el correo). Siempre y cuando QUIT
después de eso, en lugar de emitir un comando DATA
y los datos del mensaje, no se enviará nada.
Aquí hay una sesión de ejemplo, hecha desde el shell usando el comando "netcat", que muestra que mi servidor existe, pero no retransmite correo para personas desde direcciones IP aleatorias.
$ nc prod.monadic.cynic.net. 25
220 prod.monadic.cynic.net ESMTP Postfix (2.5.5)
HELO cynic.net
250 prod.monadic.cynic.net
MAIL FROM:<[email protected]>
250 2.1.0 Ok
RCPT TO:<[email protected]>
554 5.7.1 <[email protected]>: Relay access denied
QUIT
221 2.0.0 Bye
$
Como ya le han dicho a Curt, intente una conexión y compruebe si puede abrir un puerto. Luego, eche un vistazo si recibió una respuesta, pero si está configurado, un servidor no le enviará inicialmente algo. Entonces, para estar seguro, primero comience con un comando 'HELO' o 'EHLO' y verifique su respuesta. Cualquier comando adicional que pueda probar para verificar se detalla en RFC 821, 2821 y 5321. – Oliver
Un servidor inicialmente le enviará una línea 220 tan pronto como se conecte. He agregado un ejemplo arriba para aclarar esto. –
Hola Curt esto es realmente pero puedo seguir la primera parte correctamente pero no puedo entender el synatx RCPT TO: <[email protected]> ¿puedes dar algún código en C# para esto? –