Pergunta

Eu posso obter tanto System.Net.Mail e System.Web.Mail para funcionar com o Gmail, mas não posso levá-los tanto para o trabalho com smtp.att.yahoo.com.

Eu recebo as configurações de SMTP de minhas próprias chaves Web.config. Essas configurações funcionam quando eu envio usando System.Web.Mail, mas falhar com 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"/>

Aqui está o código que agarra as minhas configurações, e trabalha com GMail, falha com 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);

É este o meu problema?

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

Foi útil?

Solução

Eu aprendi a resposta. A resposta é:

Porque System.Net.Mail não suporta SSL "implícito", apenas "explícito" SSL.

Outras dicas

As respostas anteriores relativas a conexões implícitas e explícitas SSL via System.Net.Mail é absolutamente correto. A maneira que eu era capaz de passar por esse obstáculo, e sem ter que usar o System.Web.Mail agora obsoleto, era usar o CDO (Collaborative Data Objects).

Eu detalhado e deu um exemplo em outro post de estouro de pilha ( GMail SMTP via erros C # .NET em todas as portas ) se curioso. Caso contrário, você pode ir diretamente para o artigo KB em http://support.microsoft.com/kb/310212 .

Espero que isso ajude!

A resposta de Gimel é de trás para frente. Ele diz usar o novo sistema. Rede biblioteca .mail, mas o problema é que o sistema. Rede .mail não funciona para SSL na porta 465 como sistema. web .mail fez / faz o trabalho!

Eu tenho batido a cabeça contra isso durante todo o dia e para configurações idênticas do sistema. Web .mail obras, e Sistema. Net .mail não funciona (pelo menos para o servidor SMTP que tenho vindo a testar com), e aqui eu estava pensando que eu sempre deve atualizar para o mais recente oferta da Microsoft para obter a melhor na vida. : - (

Esse link para a M $ blogue parece indicá-lo todos; "System.Net.Mail suporta apenas‘SSL explícita’." e presumo que o servidor SMTP que tenho vindo a testar com quer SSL implícita. (É um servidor Yahoo btw).

Uma vez que "upgrade" para a nova API, sem dúvida, interromper a funcionalidade para usuários que possuem servidores que exigem SSL implícita parece um passo para trás para "upgrade" neste caso. Se você ainda pode compilar apenas com avisos, simplesmente desativar esses avisos (0618 se bem me lembro) e manter a camionagem. Ah, e você pode querer considerar a assegurar a sua aplicação funciona sempre contra a versão do framework .NET que você construiu e testou com por meio de arquivo de configuração, apenas para que no futuro, se M $ arranca a velha API a sua aplicação é segura.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top