2016-01-06 26 views
6

Mam aplikację konsolową i zainstalowałem pakiet mailkit do celów przesyłania wiadomości.Zalecany sposób użycia smtp4dev jako serwera wiadomości e-mail klienta poczty

Mam kod w głównej metody do testowania klienta smtp mailkit. Mam uruchomiony serwer smtp4dev, a kod klienta to example code of mailkit in github z komentarzem do części uwierzytelniającej, hostem jest localhost i port 26, pasujący do konfiguracji smtp4dev.

Gdy kod klient wykonał smtp4dev stop running i nieobsługiwany occurrs wyjątków, IOException: Unable to read data from the transport connection: an existing connection was forcibly closed by the remote host.

Jak mogę skonfigurować smtp4dev aby otrzymać wiadomość od klienta mailkit?

Odpowiedz

0

Czy masz client.Disconnect(true);? Komunikat o błędzie sugeruje, że nie.

+1

Tak zrobić. Głównym problemem jest to, że smtp4dev nasłuchuje na porcie 26 i gdy kod klienta uruchamia przystanki smtp4dev. Wygląda na to, że wyjątek został wrzucony do kodu smpt4dev. – Dalsier

8

Po kilku próbach i błędach udało mi się osiągnąć sukces w następującym układzie. smtp4dev options

Mój kod jest podobny do 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); 
    } 
} 

Dla tych, którzy nie mają dostępu do Imgur:
Domain Name: localhost
Posłuchaj Interfejs: 0.0.0.0
Numer portu: 25 (Choć, w przypadku Dalsiera, Dalsier użyje 26)
Przedłużenia:

  • [] Pośrednie SSL/TLS
  • [x] 8BITMIME
  • [] STARTTLS
  • [] AUTH
  • [x] Rozmiar

SSL/TLS certyfikatu: Brak
Hasło certyfikatu SSL/TLS: Brak
Maksymalny rozmiar wiadomości (bajty): 0
Otrzymuj limitu czasu (ms): 30000
opcje:

  • [] wymagają uwierzytelnienia
  • [] Wymagaj bezpiecznego połączenia
  • [] Zezwalaj tylko jasną uwierzytelniania tekstowych bezpiecznego połączenia
+1

linia ta odmieniła: client.ServerCertificateValidationCallback = (s, c, h, e) => true; Nawet przy całej powyższej konfiguracji, bez tego wciąż się nie udaje. – jpgrassi