Лучший способ отправить электронное письмо из приложения .NET? - PullRequest
7 голосов
/ 12 сентября 2008

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

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

Ответы [ 6 ]

6 голосов
/ 12 сентября 2008

Вам не нужно беспокоиться о клиентских учетных данных и просто использовать SmtpClient, как предложено Esteban. Вам потребуется, чтобы пользователь указал действительный 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 работает для этих частей файла конфигурации.

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

3 голосов
/ 12 сентября 2008

Вы хотите использовать класс SmtpClient, как указано здесь .
Нет никаких ошибок - отправка электронной почты так же проста, как и получается.

2 голосов
/ 12 сентября 2008

Вы упомянули, что используете 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. Я проверил с Майклом Прайором re: licensing, и он сказал, что было бы неплохо использовать их код, но YMMV, поэтому я проверю.

Это хорошая отправная точка.

2 голосов
/ 12 сентября 2008

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

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

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

1 голос
/ 12 сентября 2008

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

0 голосов
/ 18 сентября 2008

Вы захотите использовать класс SmtpClient, как указано здесь . Нет никаких ошибок - отправка электронной почты так же проста, как и получается.

Обширный FAQ по System.Net.Mail находится здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...