2010-09-01 4 views
16

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

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

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-аутентификации», которая кажется важной.

ответ

1

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

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

25

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

Смежные вопросы