2008-09-11 35 views
7

Tôi đang làm việc trên ứng dụng Windows Forms (.NET 3.5) có trình xử lý ngoại lệ được tích hợp sẵn để phát hiện bất kỳ ngoại lệ nào (có thể ngăn cấm) có thể xuất hiện. Tôi muốn trình xử lý ngoại lệ có thể nhắc người dùng nhấp vào nút "Gửi báo cáo lỗi", điều này sẽ khiến ứng dụng gửi email đến địa chỉ email FogBugz của tôi.Cách tốt nhất để gửi email từ ứng dụng .NET là gì?

Cách tốt nhất để làm điều này là gì và có bất kỳ "gotchas" nào để xem không?

Trả lời

3

Bạn sẽ muốn sử dụng lớp SmtpClient như được nêu here.
Không có gotchas - gửi email là về dễ dàng như nó được.

+3

Khả năng mở rộng là bao nhiêu nếu bạn cần gửi thư cho 1000 người dùng của mình bằng smtp? Bạn có phải viết thêm mã để làm chậm máy chủ smtp không bị ngập không? – Haoest

1

Bạn cũng có thể muốn xem thư viện bên thứ 3 aspNetEmail, trong đó có rất nhiều tính năng hữu ích để cung cấp trên những gì System.Net.Mail cung cấp cho bạn.

2

Trong môi trường được kiểm soát, sử dụng SmtpClient sẽ là câu trả lời. Nhưng trên máy của người dùng, bạn sẽ cần một máy chủ SMTP để gửi qua.

Bạn có thể nhắc người dùng về thông tin đăng nhập SMTP của họ, nhưng tôi nghĩ điều đó sẽ không thực tế đối với trường hợp của bạn. Là một người dùng, tôi sẽ không muốn cung cấp thông tin đăng nhập SMTP của tôi cho một ứng dụng ngẫu nhiên (nghĩ SPAM). Bạn cũng không muốn mã hóa cứng thông tin đăng nhập SMTP của chính mình vào ứng dụng, điều này sẽ không quan trọng đối với người dùng độc hại để đánh lừa những thông tin đăng nhập đó và sử dụng máy chủ của bạn để gửi SPAM.

Lý tưởng nhất là bạn có thể sử dụng tác nhân thư của người dùng để gửi email. Tôi đã nghĩ rằng bạn có thể xây dựng và thực hiện một mailto: URL, nhưng tôi không chắc chắn nếu bạn muốn có thể xác định cơ thể hoặc bất kỳ tập tin đính kèm cho tin nhắn.

+0

Cú pháp là mailto: [email protected]? Subject = Hello & body = Thế giới! Các tham số phải được thoát khỏi url – rpetrich

6

Bạn không cần phải lo lắng về thông tin đăng nhập của khách hàng và chỉ sử dụng SmtpClient như được đề xuất bởi Esteban. Bạn sẽ cần người dùng cung cấp địa chỉ máy chủ Smtp hợp lệ trong cấu hình, nhưng hầu hết các ISP cho phép smtp ẩn danh cung cấp cho bạn trên mạng của họ (một trong những khách hàng của họ) - miễn là người dùng đặt vào url cho máy chủ SMTP của họ sau đó mọi người sẽ không gặp bất kỳ vấn đề gì.

Lưu ý: Có phần được xác định trước của tệp .config để lưu trữ các tùy chọn cấu hình cho đối tượng SmtpClient. Nếu bạn đặt các cài đặt trong đó, bạn không phải đặt rõ ràng bất kỳ thứ gì trong mã khi gửi email. Ví dụ về phần bên dưới:

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

Tên người dùng và mật khẩu là tùy chọn. Intellisense làm việc cho những phần này của tập tin cấu hình.

Chỉnh sửa: chỉnh sửa nhỏ đối với ví dụ về mã của tôi.

+0

Hey! Bạn vui lòng đánh vần tên tôi đúng không? Cảm ơn, Esteban –

2

Bạn đã đề cập bạn đang sử dụng Fogbugz.

Hãy thử http://www.fogcreek.com/FogBugz/docs/60/topics/customers/BugzScout.html?isl=59722 hoặc http://www.fogcreek.com/FogBugz/blog/post/C-wrapper-for-the-FogBugz-API.aspx?isl=59722

Có một số mẫu mã xung quanh, tôi nghĩ rằng trong FB của bạn cài đặt thư mục. Tôi đã kiểm tra với Michael Pryor lại: cấp phép và ông nói rằng nó là tốt để sử dụng mã của họ, nhưng YMMV, vì vậy tôi muốn kiểm tra.

Nó cung cấp một điểm khởi đầu tốt.

0

Bạn sẽ muốn sử dụng lớp SmtpClient như được nêu here. Không có gotchas - gửi email là về dễ dàng như nó được.

Một rộng lớn System.Net.Mail FAQ được đặt here.

Các vấn đề liên quan