Лучший способ отправить электронное письмо из приложения .NET?

StackOverflow https://stackoverflow.com/questions/57919

  •  09-06-2019
  •  | 
  •  

Вопрос

Я работаю над приложением Windows Forms (.NET 3.5), которое имеет встроенный обработчик исключений для перехвата любых (не дай бог) исключений, которые могут возникнуть.Я бы хотел, чтобы обработчик исключений мог предлагать пользователю щелкнуть Отправить отчет об ошибке кнопку, после чего приложение отправит электронное письмо на мой адрес электронной почты FogBugz.

Как лучше всего это сделать и есть ли какие-то «подводные камни», на которые следует обратить внимание?

Это было полезно?

Решение

Вы захотите использовать класс SmtpClient, как описано. здесь.
Здесь нет ошибок: отправить электронное письмо настолько просто, насколько это возможно.

Другие советы

Вам не нужно беспокоиться об учетных данных клиента и просто использовать SmtpClient, как предложил Эстебан.Вам понадобится, чтобы пользователь предоставил действительный URL-адрес сервера Smtp при настройке, но большинство интернет-провайдеров разрешают анонимный smtp, если вы находитесь в их сети (один из их клиентов) - до тех пор, пока пользователь вводит URL-адрес smptp-сервера своего интернет-провайдера, тогда большинство у людей не было бы никаких проблем.

Примечание:В файле .config имеется предопределенный раздел для хранения параметров конфигурации объекта SmtpClient.Если вы поместите туда настройки, вам не придется ничего явно устанавливать в коде при отправке электронного письма.Пример раздела ниже:

<system.net>
   <mailSettings>
      <smtp deliveryMethod="Network" from="stuff@somewhere.com.au">
         <network host="smtp.somewhere.com.au" />
      </smtp>
   </mailSettings>
</system.net>

Имя пользователя и пароль не являются обязательными.Intellisense работает для этих частей файла конфигурации.

Редактировать:небольшая поправка к моему примеру кода.

В контролируемой среде, использование SmtpClient будет ответом.Но на компьютере пользователя вам понадобится SMTP-сервер для отправки.

Вы могли бы запросить у пользователя учетные данные SMTP, но я думаю, что в вашем случае это будет непрактично.Как пользователь, я бы не хотел предоставлять свои учетные данные SMTP случайному приложению (например, СПАМ).Вы также не хотите жестко запрограммировать свои собственные учетные данные SMTP в приложении: злоумышленнику будет легко перехватить эти учетные данные и использовать ваш сервер для рассылки СПАМ.

В идеале вы могли бы использовать почтовый агент пользователя для отправки электронного письма.Я подумал, что вы могли бы сформулировать и выполнить mailto:URL, но я не уверен, сможете ли вы указать тело или вложения к сообщению.

Вы упомянули, что используете Fogbugz.

Пытаться http://www.fogcreek.com/FogBugz/docs/60/topics/customers/BugzScout.html?isl=59722или http://www.fogcreek.com/FogBugz/blog/post/C-wrapper-for-the-FogBugz-API.aspx?isl=59722

Я думаю, что в вашем каталоге установки FB есть пример кода.Я сверился с Майклом Прайором по поводу:лицензирования, и он сказал, что можно использовать их код, но YMMV, поэтому я проверю.

Это обеспечивает хорошую отправную точку.

Вы также можете проверить стороннюю aspNetEmail библиотека, которая предлагает множество полезных функций помимо того, что дает вам System.Net.Mail.

Вы захотите использовать класс SmtpClient, как описано. здесь.Здесь нет ошибок: отправить электронное письмо настолько просто, насколько это возможно.

Обширный Часто задаваемые вопросы по System.Net.Mail расположен здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top