2013-02-11 5 views
5

Я просто пытаюсь заставить мой hmailserver отправлять почту из моей программы на C#. Часть, которая убивает меня, является частью SSL.Hmailserver C# SMTP

Первоначально я получил эту ошибку: The SMTP server requires a secure connection or the client was not authenticated. The server response was: SMTP authentication is required.

Так я добавил: smtp.EnableSsl = истина; и теперь я получаю Server does not support secure connections.

Вот мой код, это сводит меня с ума. Должен ли я создавать свой собственный SSL или есть способ отключить SSL на стороне hmailserver?

MailMessage mail = new MailMessage("[email protected]", "com", "NEW Item", emailBody); 
SmtpClient smtp = new SmtpClient("1.1.1.250"); 
smtp.Port = 25; 
NetworkCredential login = new NetworkCredential("[email protected]", "dg"); 
smtp.Credentials = login; 
smtp.EnableSsl = true; 
smtp.UseDefaultCredentials = false; 
smtp.Send(mail); 
+0

Может играть с вариантами hmailserver в? Я использую hmailserver с лет без ssl из моих программ C#. –

+0

@UweKeim хорошо, какие опции? Я не хочу, чтобы SSL я просто хотел отправить основную почту на другую учетную запись. – 2013-02-11 00:51:53

ответ

4

Ahh хорошо, что вам нужно сделать, это в HMailServer перейти на расширенные диапазоны. Создайте новый диапазон IP, например, если вы используете 192.168.1.2, вы должны сделать диапазон 192.168.1.1-192.168.1.3, а затем снимите отметку со всех необходимых полей проверки подлинности smtp.

Досадно ...

+0

Я знаю, что это старый поток, но для будущих гуглеров я просто хочу добавить, что вам также нужно заботиться о приоритете IP-диапазонов. Если несколько диапазонов совпадают, используется один с наивысшим приоритетом. – Hintham

0

Чтобы включить безопасное соединение для отправки электронной почты Повсеместно ваш поставщик услуг электронной почты, вы должны изменить номер порта.

 MailMessage mail = new MailMessage("[email protected]", "com", "NEW Item", emailBody); 
     SmtpClient smtp = new SmtpClient("1.1.1.250"); 
     //smtp.Port =25; 
     smtp.Port =587; 
     NetworkCredential login = new NetworkCredential("[email protected]", "dg"); 
     smtp.Credentials = login; 
     smtp.EnableSsl = true; 
     smtp.UseDefaultCredentials = false; 
     smtp.Send(mail); 
0

я имел этот вопрос, что я сделал, было использовано LOCALHOST ф и EnableSsl к ложному

SmtpClient smtpClient = new SmtpClient(); 
      smtpClient.Host = "127.0.0.1"; 
      smtpClient.Credentials = new NetworkCredential("[email protected]", "pass123"); 
      smtpClient.EnableSsl = false; 

     // then your other statements like: from, to, body, to send mail 

this руководство поможет вам настроить пользовательские NetworkCredentials в HMailServer, используемый выше, надеюсь кто-то помогает.

0

Я наткнулся на этот вопрос, пытаясь настроить hMailServer для работы с отправкой по электронной почте с C#. Я попытался следующие:

  • C# SmtpClient - не работает с неявным SSL - посмотреть question и ответы
  • AegisImplicitMail из here - не мог заставить его работать с UTF-8 строк (у меня есть диакритические в моей строки)
  • MailKit от here - очень мощные и зрелые, никаких проблем не использовать его

I предназначен для следующих действий:

  • приемлемая безопасность
  • возможность отправлять электронные письма основным поставщикам электронной почты (например,Google, Yahoo) и достичь Входящие
  • возможность получать электронную почту от основных поставщиков услуг электронной почты

C# код

public void MailKitSend(string senderEmail, string senderName, string subject, string bodyText, string receivers, string receiversCc) 
    { 
     // no receivers, no e-mail is sent 
     if (string.IsNullOrEmpty(receivers)) 
      return; 

     var msg = new MimeMessage(); 
     msg.From.Add(new MailboxAddress(Encoding.UTF8, senderName, senderEmail)); 
     msg.Subject = subject; 
     var bb = new BodyBuilder {HtmlBody = bodyText}; 
     msg.Body = bb.ToMessageBody(); 

     IList<string> receiversEmails = receivers.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries).ToList(); 
     foreach (string receiver in receiversEmails) 
      msg.To.Add(new MailboxAddress(Encoding.UTF8, "", receiver)); 

     if (!string.IsNullOrEmpty(receiversCc)) 
     { 
      IList<string> receiversEmailsCc = receiversCc.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries).ToList(); 
      foreach (string receiverCc in receiversEmailsCc) 
       msg.Cc.Add(new MailboxAddress(Encoding.UTF8, "", receiverCc)); 
     } 

     try 
     { 
      var sc = new MailKit.Net.Smtp.SmtpClient(); 
      if (!string.IsNullOrWhiteSpace(SmtpUser) && !string.IsNullOrWhiteSpace(SmtpPassword)) 
      { 
       sc.Connect(SmtpServer, 465); 
       sc.Authenticate(SmtpUser, SmtpPassword); 
      } 

      sc.Send(msg); 
      sc.Disconnect(true); 
     } 
     catch (Exception exc) 
     { 
      string err = $"Error sending e-mail from {senderEmail} ({senderName}) to {receivers}: {exc}"; 
      throw new ApplicationException(err); 
     } 
    } 

конфигурации hMailServer

1) Открытые порты - 25, 143, 465, 995 открыты, чтобы вы могли отправлять и получать электронную почту

2) Конфигурация TCP/IP портов

SMTP/0.0.0.0/port 25/no security (allow receiving start process) 
SMTP/0.0.0.0/port 465/SSL/TLS security (must define a SSL certificate) 
POP3/0.0.0.0/port 995/SSL/TLS security (use the same SSL certificate) 

3) предварительно C# тестирование

Run Diagnostics из hMailServer Administrator

использовать клиент электронной почты, который позволяет вручную конфигурировать различных параметров, таких как порты для каждого протокола, безопасность. Я использовал Thunderbird. Включать отправку электронных писем внешним поставщикам и получать от них электронные письма (я пытался с Gmail).

Я не внес изменения в диапазоны IP и оставил неявные (Мой компьютер и Интернет).

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