2011-01-16 25 views
5

Làm thế nào để viết email (tệp .eml) trên đĩa thay vì gửi đến địa chỉ thực trong asp.net? Cảm ơn trước.Làm thế nào để viết email trên đĩa thay vì gửi đến địa chỉ thực trong asp.net?

+2

bản sao có thể có của [Cách lưu đối tượng MailMessage vào đĩa dưới dạng * .eml hoặc * .msg file] (http://stackoverflow.com/questions/1264672/how-to-save-mailmessage-object-to-disk -as-eml-or-msg-file) – JPBlanc

Trả lời

12
using (var client = new SmtpClient("somehost")) 
{ 
    client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; 
    client.PickupDirectoryLocation = @"C:\somedirectory"; 
    client.Send(message); 
} 

hoặc sử dụng các tập tin cấu hình:

<configuration> 
    <system.net> 
    <mailSettings> 
     <smtp deliveryMethod="SpecifiedPickupDirectory"> 
     <specifiedPickupDirectory pickupDirectoryLocation="C:\somedirectory" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 
</configuration> 
+1

Tôi chắc chắn sẽ khuyên bạn nên sử dụng cách tiếp cận tệp cấu hình so với mã. Có khả năng là trong quá trình phát triển bạn sẽ muốn viết các email vào đĩa, nhưng trong triển khai bạn sẽ muốn chuyển đổi các thiết lập mailSettings của bạn để sử dụng một máy chủ Smtp thực. –

0

Tôi giả định rằng bạn đang sử dụng SmtpClient vì đó là tiêu chuẩn khá.

Viết triển khai SMTP của riêng bạn (thật dễ dàng) để ghi các thư được gửi qua đĩa đó thay vì gửi email thực sự.

Sau đó

// mailMessage is MailMessage 
var client = new SmtpClient("address.of.your.smtp.implementation"); 
client.Send(mailMessage); 

Bây giờ máy chủ của bạn sẽ chặn gửi yêu cầu này và ghi nó vào đĩa.

5

Bạn có thể cấu hình các SmtpClient để đưa email vào một thư mục cấu hình thay vì gửi chúng. Để làm điều này, bạn cần phải thiết lập các DeliveryMethod-SpecifiedPickupDirectory và thiết lập PickupDirectoryLocation:

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="SpecifiedPickupDirectory"> 
      <specifiedPickupDirectory pickupDirectoryLocation="C:\emails" /> 
     </smtp> 
    </mailSettings> 
</system.net> 

Khi bạn gửi email bằng tiêu chuẩn SmtpClient, họ bây giờ sẽ được lưu vào thư mục chỉ định thay vì thực sự được gửi đi.

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