Подтвердить что ты не робот

Аутентификация SMTP с помощью файла конфигурации MailSettings

Я храню свои MailSettings в web.config, однако, когда я отправляю сообщение, мой SMTP-сервер отчитывается, что мне нужно использовать аутентификацию. У меня есть имя пользователя/пароль в файле конфигурации, но он все равно не работает.

Он работает, если я делаю следующее, но это похоже на дополнительный шаг. Должен ли он просто взять его из файла конфигурации и автоматически использовать аутентификацию?

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

Превышено распределение хранилища. Ответ сервера: Пожалуйста, используйте smtp аутентификация. Видеть http://www.myISP.com/support/smtp-authentication.aspx

"Превышение распределения хранилища" смутило нас довольно долго, теперь мы игнорируем его. Это "использование smtp-аутентификации", которая кажется важной.

4b9b3361

Ответ 1

Разница между кодированным подходом и единственным методом web.config заключается в том, что последний имеет defaultCredentials="true". Это предотвращает использование имени пользователя и пароля для аутентификации при таком подходе. Я думаю, что проблема будет решена, установив это на "false" (или полностью удалив его, потому что "false" является значением по умолчанию).

Ответ 2

Класс SmtpClient должен использовать параметры auth без необходимости явно читать имя пользователя или пароль из конфигурации. См. http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx

Вы можете опубликовать сегмент System.Net из своей конфигурации? Кроме того, можете ли вы разместить точную ошибку, которую вы получаете с SMTP-сервера?