Domanda

Riesco a far funzionare sia System.Net.Mail che System.Web.Mail con GMail, ma non riesco a farli funzionare entrambi con smtp.att.yahoo.com.

Ricevo le impostazioni SMTP dalle mie chiavi Web.config. Queste impostazioni funzionano quando invio utilizzando System.Web.Mail, ma non riesco con System.Net.Mail.

    <add key="SmtpServer" value="smtp.att.yahoo.com"/>
    <add key="SmtpServerAuthenticateUser" value="ctrager@sbcglobal.net"/>
    <add key="SmtpServerPort" value="465"/>
    <add key="SmtpUseSSL" value="1"/>
    <add key="SmtpServerAuthenticatePassword" value="MY PASSWORD"/>

Ecco il codice che acquisisce le mie impostazioni e funziona con GMail, fallisce con att.yahoo:

        SmtpClient smtp;

        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServer", "")))
        {
           smtp = new SmtpClient(Util.get_setting("SmtpServer", ""));
        }
        else
        {
           smtp = new SmtpClient();
        }


        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServerAuthenticatePassword", "")))
           smtp.Credentials = new System.Net.NetworkCredential(
               Util.get_setting("SmtpServerAuthenticateUser", ""), 
               Util.get_setting("SmtpServerAuthenticatePassword", ""));

        if (!string.IsNullOrEmpty(Util.get_setting("SmtpServerPort", "")))
           smtp.Port = int.Parse(Util.get_setting("SmtpServerPort", ""));

        if (Util.get_setting("SmtpUseSSL", "0") == "1")
           smtp.EnableSsl = true;

        smtp.Send(message);

È questo il mio problema?

http://blogs.msdn.com/webdav_101/archive/2008/06/02/system-net-mail-with-ssl-to-authenticate-against-port-465.aspx

È stato utile?

Soluzione

Ho imparato la risposta. La risposta è:

Perché System.Net.Mail non supporta " implicito " SSL, solo "esplicito" SSL.

Altri suggerimenti

Le risposte precedenti riguardanti connessioni SSL implicite ed esplicite tramite System.Net.Mail sono assolutamente corrette. Il modo in cui sono riuscito a superare questo ostacolo, e senza dover usare l'ormai obsoleto System.Web.Mail, è stato utilizzare il CDO (Collaborative Data Objects).

Ho dettagliato e fornito un esempio su un altro post di overflow dello stack ( GMail SMTP tramite errori C # .Net su tutte le porte ) se curioso. Altrimenti, puoi andare direttamente all'articolo KB in http://support.microsoft.com/kb/310212 .

Spero che questo aiuti!

La risposta di Gimel è di nuovo in primo piano. Dice di usare il nuovo sistema. Rete . Libreria di posta, ma il problema è che il sistema. Rete . La posta non funziona per SSL sulla porta 465 come Sistema. Web . La posta ha funzionato / funziona!

Ho battuto la testa contro questo tutto il giorno e per impostazioni identiche Sistema. Web .Mail FUNZIONA e Sistema. Rete . La posta NON funziona (almeno per il server SMTP con cui ho provato), e qui ho pensato che avrei dovuto aggiornare sempre all'ultima offerta di Microsoft per ottenere il meglio dalla vita. : - (

Quel link al blog M $ sembra affermare tutto; " System.Net.Mail supporta solo & # 8220; SSL esplicito & # 8221;. " e presumo che il server SMTP con cui ho testato desideri SSL implicito. (È un server Yahoo tra l'altro).

Poiché " upgrade " alla nuova API senza dubbio interromperà la funzionalità per gli utenti che dispongono di server che richiedono SSL implicito, sembra un passo indietro verso "l'aggiornamento" in questo caso. Se riesci ancora a compilare solo con avvisi, disabilita semplicemente quegli avvisi (0618 se ricordo) e continua a trasportare camion. Oh, e potresti prendere in considerazione l'idea di garantire che la tua applicazione sia sempre in esecuzione con la versione di .NET framework che hai creato e testato tramite il file di configurazione, così in futuro se M $ strappa la vecchia API la tua applicazione è sicura.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top