2010-01-28 15 views
7

Estoy intentando utilizar la clase System.Net.Mail.SmtpClient para retransmitir un correo electrónico a través del servidor de correo electrónico de mi compañía. Todas las conexiones SMTP al servidor de correo deben ser SSL y usa un certificado autofirmado. Eso está bien para Outlook, donde puede simplemente hacer clic en Aceptar en el cuadro de diálogo de advertencia, pero ¿alguien sabe cómo hacer que SmtpClient acepte un certificado autofirmado?Hacer que SmtpClient trabaje con un certificado SSL autofirmado

Planeo utilizar esta aplicación en la Plataforma de Windows Azure, por lo que no podré instalar el certificado autofirmado como una raíz de confianza.

Respuesta

9

Usted puede echar un vistazo a la propiedad ServerCertificateValidationCallback:

ServicePointManager.ServerCertificateValidationCallback = 
    (sender, certificate, chain, sslPolicyErrors) => true; 

representa una devolución de llamada que se llama el tiempo de ejecución cuando se intenta validar un certificado SSL. Al devolver true, básicamente dice que no le importa si el certificado es válido o no -> siempre lo acepta. Por supuesto, tener certificados autofirmados en el entorno de producción no es una buena idea.

+0

Miré un poco el ángulo de ServicePoint pero vi este comentario en la página de documentación de ServicePoint/Members "Proporciona administración de conexión para conexiones HTTP", así que me da la impresión de que no se usará para SMTP. Además, cuando lo intento y coloco un mensaje de registro en la devolución de llamada, nunca se llama. – sipwiz

+4

Necesita poner ** ** antes de esto para intentar instanciar la clase 'SmtpClient', idealmente en alguna sección de inicialización global de su aplicación. –

Cuestiones relacionadas