2016-01-06 3 views
6

У меня есть консольное приложение, и я установил пакет mailkit для обмена сообщениями.Рекомендуемый способ использования smtp4dev в качестве сервера сообщений клиента mailkit

У меня есть код в основном методе проверки клиента mailkit smtp. У меня запущен пустующий сервер smtp4dev, а код клиента - example code of mailkit in github с комментарием части аутентификации, хост - это localhost и порт 26, соответствующий конфигурации smtp4dev.

Когда клиентский код выполняется в smtp4dev stop running и необработанное occurrs исключения, IOException: Unable to read data from the transport connection: an existing connection was forcibly closed by the remote host.

Как я могу настроить smtp4dev получить сообщение от mailkit клиента?

ответ

0

У вас есть client.Disconnect(true);? Сообщение об ошибке предполагает, что вы этого не сделаете.

+1

Да делать. Основная проблема заключается в том, что smtp4dev прослушивает порт 26, а когда клиентский код запускает остановки smtp4dev. Кажется, исключение было брошено внутри кода smpt4dev. – Dalsier

8

После некоторых проб и ошибок, я смог добиться успеха в следующем порядке. smtp4dev options

Мой код похож на 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); 
    } 
} 

Для тех, кто не может получить доступ к Imgur:
имя домена: локальный
Слушать Интерфейс: 0.0.0.0
Номер порта: 25 (Хотя, в случае Дальсье, Далльер будет использовать 26)
Расширения:

  • [] неявных SSL/TLS
  • [х] 8BITMIME
  • [] STARTTLS
  • [] AUTH
  • [х] РАЗМЕР

SSL/TLS Сертификат: Отсутствует
Сертификат SSL/TLS: Нет
Максимальный размер сообщения (байт): 0
Прием тайм-аут (мс): 30000
Параметры:

  • [] Требуется аутентификация
  • [] Требуется защищенное соединение
  • [] позволяют только четкий текст аутентификации через защищенное соединение
+1

эта строка сделала разницу: client.ServerCertificateValidationCallback = (s, c, h, e) => true; Даже со всей конфигурацией выше, без этого все еще не удается. – jpgrassi

Смежные вопросы