ti-enxame.com

Autenticação SMTP com MailSettings do arquivo de configuração

Estou armazenando minhas MailSettings em um web.config, no entanto, quando envio a mensagem, meu servidor SMTP informa que preciso usar a autenticação. Eu tenho meu nome de usuário/senha no arquivo de configuração, mas ele ainda falha.

Funciona se eu fizer o seguinte, mas parece uma etapa extra. Não deveria apenas retirá-lo do arquivo de configuração e usar a autenticação automaticamente?

System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration(
    HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings =
    (MailSettingsSectionGroup) config.GetSectionGroup("system.net/mailSettings");

SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential(
   settings.Smtp.Network.UserName, settings.Smtp.Network.Password);

Web.config

<system.net>
    <mailSettings>
        <smtp from="[email protected]" deliveryMethod="Network">
            <network Host="mail.xyz.com" defaultCredentials="true"
                userName="[email protected]" password="abc123" />
        </smtp>
    </mailSettings>
 </system.net>

System.Net.Mail.SmtpException

Excedeu a capacidade de armazenamento. A resposta do servidor foi: Por favor, use autenticação smtp. Consulte http://www.myISP.com/support/smtp-authentication.aspx

A "alocação de armazenamento excedida" nos confundiu por um bom tempo, agora a ignoramos. É o "usar autenticação SMTP" que parece ser importante.

17
Eric

A diferença entre a abordagem codificada e a apenas web.config é que a última possui defaultCredentials="true" definido. Isso impede que o nome de usuário e a senha sejam usados ​​para autenticação, com essa abordagem. Eu acho que o problema seria resolvido definindo-o como "false" (ou removendo-o completamente, porque "false" é o padrão).

28
Mike Green

A classe SmtpClient deve usar os parâmetros de autenticação sem que você precise ler explicitamente o nome de usuário ou a senha da configuração. Consulte http://msdn.Microsoft.com/en-us/library/system.net.mail.smtpclient.aspx

Você pode postar o segmento System.Net da sua configuração? Além disso, você pode postar o erro exato que está recebendo do servidor SMTP?

1
Peter Mourfield