2008-09-11 7 views
7

나는 발생할 수있는 예외 (천재 금지)를 잡기 위해 내장 예외 처리기가있는 Windows Forms (.NET 3.5) 응용 프로그램에서 작업하고 있습니다. 예외 처리기에서 사용자에게 "오류 보고서 보내기"버튼을 클릭하라는 메시지를 표시하여 앱이 FogBugz 전자 메일 주소로 전자 메일을 보내도록합니다..NET 응용 프로그램에서 전자 메일을 보내는 가장 좋은 방법은 무엇입니까?

이 작업을 수행하는 가장 좋은 방법은 무엇이며 조심해야 할 "잡았다"가 있습니까?

답변

3

here과 같은 SmtpClient 클래스를 사용하려고합니다.
gotchas가 없습니다 - 보내는 이메일은 도착하는 것처럼 쉽습니다.

+3

smtp를 사용하여 1000 명의 사용자에게 메일을 보내야하는 경우 확장 성은 어느 정도입니까? smtp 서버가 침수되지 않도록 속도를 늦추려면 추가 코드를 작성해야합니까? – Haoest

1

또한 System.Net.Mail에서 제공하는 많은 유용한 기능을 제공하는 타사 aspNetEmail 라이브러리를 확인하십시오.

2

제어 된 환경에서 SmtpClient를 사용하는이 답이됩니다. 그러나 사용자 컴퓨터에서 보내려면 SMTP 서버가 있어야합니다.

사용자에게 SMTP 자격 증명을 묻는 메시지를 표시 할 수 있지만 귀하의 경우에는 실용적이지 않을 것이라고 생각합니다. 사용자로서, 임의의 응용 프로그램에 내 SMTP 자격 증명을 제공하고 싶지 않습니다 (스팸 생각). 또한 자신의 SMTP 자격 증명을 앱에 하드 코딩하지 않으려는 경우 악의적 인 사용자가 해당 자격 증명을 스니핑하고 서버를 사용하여 스팸을 전송하는 것은 사소한 일입니다.

이상적으로 사용자의 메일 에이전트를 사용하여 이메일을 보낼 수 있습니다. mailto : URL을 공식화하고 실행할 수 있다고 생각했지만 메시지의 본문이나 첨부 파일을 지정할 수 있는지 확실하지 않습니다.

+0

구문은 mailto : [email protected]입니까? subject = Hello & body = World! 매개 변수는 URL 이스케이프 처리되어야합니다 – rpetrich

6

클라이언트 자격 증명에 대해 걱정할 필요가 없으며 Esteban에서 제안한대로 SmtpClient를 사용해야합니다. 구성에 유효한 SMTP 서버 URL을 제공하려면 사용자가 필요하지만 대부분의 ISP는 사용자가 자신의 ISP (인터넷 사용자) 중 하나 인 smptp 서버에 대한 URL을 입력하는 한 자신의 네트워크에있는 익명의 SMTP를 허용합니다 사람들은 아무런 문제가 없을 것입니다.

참고 : SmtpClient 개체의 구성 옵션을 저장하기위한 .config 파일의 미리 정의 된 섹션이 있습니다. 거기에 설정을 넣으면 전자 메일을 보낼 때 명시 적으로 코드에서 아무 것도 설정하지 않아도됩니다. 이 섹션의 예는 다음과 같습니다.

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="Network" from="[email protected]"> 
     <network host="smtp.somewhere.com.au" /> 
     </smtp> 
    </mailSettings> 
</system.net> 

사용자 이름과 비밀번호는 선택 사항입니다. Intellisense는 설정 파일의 이러한 부분에 대해 작동합니다.

편집 : 코드 예제를 약간 수정하십시오.

+0

안녕하세요! 내 이름의 철자를 바꿔 주시겠습니까? 고마워, 에스테반 –

2

당신은 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에 생각합니다. 나는 Michael Pryor re : licensing과 확인해 봤지만 코드를 사용하는 것이 좋았지 만 YMMV는 확인 했어.

좋은 출발점입니다.

0

here과 같이 SmtpClient 클래스를 사용하려고합니다. gotchas가 없습니다 - 보내는 이메일은 도착하는 것처럼 쉽습니다.

System.Net.Mail FAQhere입니다.

관련 문제