2016-01-06 21 views
6

Tôi có ứng dụng bảng điều khiển và tôi đã cài đặt gói mailkit cho mục đích nhắn tin.Cách được khuyến nghị để sử dụng smtp4dev làm máy chủ thư của khách hàng mailkit

Tôi có mã trong phương pháp chính để kiểm tra ứng dụng khách SMTP SMTP. Tôi có smtp4dev máy chủ giả chạy và mã khách hàng là example code of mailkit in github với phần xác thực nhận xét, máy chủ lưu trữ là localhost và cổng 26, phù hợp với cấu hình smtp4dev.

Khi mã khách hàng được thực hiện các smtp4dev stop running và một occurrs ngoại lệ unhandled, IOException: Unable to read data from the transport connection: an existing connection was forcibly closed by the remote host.

Làm thế nào tôi có thể cấu hình smtp4dev để nhận được thông báo từ khách hàng mailkit?

Trả lời

0

Bạn có số client.Disconnect(true); không? Thông báo lỗi cho thấy rằng bạn không.

+1

Có, tôi làm. Vấn đề chính là smtp4dev đang nghe ở cổng 26 và khi mã máy khách chạy smtp4dev dừng lại. Có vẻ như một ngoại lệ đã được ném vào bên trong mã smpt4dev. – Dalsier

8

Sau một số lần thử và lỗi, tôi đã có thể thành công với sự sắp xếp sau. smtp4dev options

Mã của tôi cũng tương tự như https://github.com/jstedfast/MailKit#sending-messages:

public void DoMail() 
{ 
    var message = new MimeMessage(); 
    message.From.Add(new MailboxAddress("Joey", "[email protected]")); 
    message.To.Add(new MailboxAddress("Alice", "[email protected]")); 
    message.Subject = "How you doin?"; 

    message.Body = new TextPart("plain") 
    { 
     Text = @"Hey Alice, 

What are you up to this weekend? Monica is throwing one of her parties on 
Saturday and I was hoping you could make it. 

Will you be my +1? 

-- Joey 
" 
    }; 

    using (var client = new SmtpClient()) 
    { 
     // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS) 
     client.ServerCertificateValidationCallback = (s, c, h, e) => true; 

     client.Connect("localhost", 25, false); 

     // Note: since we don't have an OAuth2 token, disable 
     // the XOAUTH2 authentication mechanism. 
     client.AuthenticationMechanisms.Remove("XOAUTH2"); 

     // Note: only needed if the SMTP server requires authentication 
     //client.Authenticate("joey", "password"); 

     client.Send(message); 
     client.Disconnect(true); 
    } 
} 

Đối với những người không thể truy cập imgur:
Domain Name: localhost
Nghe Interface: 0.0.0.0
Port Number: 25 (Mặc dù, trong trường hợp của Dalsier, Dalsier sẽ sử dụng 26)
Tiện ích mở rộng:

  • [] SSL Implicit/TLS
  • [x] 8BITMIME
  • [] STARTTLS
  • [] AUTH
  • [x] SIZE

chỉ SSL/TLS: Không
Mật khẩu Chứng chỉ SSL/TLS: Không có
Kích thước Thông báo Tối đa (byte): 0
Nhận timeout (ms): 30000
Options:

  • [] Yêu cầu xác thực
  • [] Yêu cầu kết nối an toàn
  • [] Chỉ cho phép xác thực văn bản rõ ràng qua kết nối an toàn
+1

dòng này tạo sự khác biệt: client.ServerCertificateValidationCallback = (s, c, h, e) => true; Ngay cả với tất cả các cấu hình trên, mà không có điều này vẫn không thành công. – jpgrassi

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