Hmailserver C # SMTP

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

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

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

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

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);

person Community    schedule 11.02.2013    source источник
comment
Может поиграться с опциями hmailserver'а? Я использую hmailserver годами без ssl из моих программ на C #.   -  person Uwe Keim    schedule 11.02.2013
comment
@UweKeim, хорошо, какие варианты? Мне не нужен SSL, я просто хочу отправить обычную почту на другую учетную запись   -  person    schedule 11.02.2013


Ответы (5)


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

Раздражающий...

person Community    schedule 11.02.2013
comment
Я знаю, что это старая ветка, но для будущих гуглеров я просто хочу добавить, что вам также нужно позаботиться о приоритете IP-диапазонов. Если совпадают несколько диапазонов, используется один с наивысшим приоритетом. - person Hintham; 17.04.2015

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

       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);   
person Nudier Mena    schedule 11.02.2013

У меня была эта проблема, то, что я сделал, было использовано для localhost ip и EnableSsl в false

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

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

person Shaiju T    schedule 01.03.2015

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

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

Я стремился к следующему:

  • достойная безопасность
  • возможность отправлять электронные письма основным поставщикам услуг электронной почты (например, 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 #

Запустите диагностику от администратора hMailServer

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

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

person Alexei - check Codidact    schedule 24.12.2016

Хотя прошло 7 лет с тех пор, как был опубликован принятый ответ - я также проголосовал за него в начале - я хочу подчеркнуть, что предлагаемое решение отключает весь процесс аутентификации, в котором нет необходимости. Проблема в строке с:

smtp.UseDefaultCredentials = false;

Просто удалите эту строку, и она должна работать.

Я публикую здесь рабочее решение для меня (обратите внимание, что я не использую SSL):

    MailMessage mail = new MailMessage("[email protected]", "[email protected]");
    SmtpClient client = new SmtpClient();
    client.Credentials = new NetworkCredential("[email protected]", "test");
    client.Port = 25;
    client.EnableSsl = false;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false;
    client.Host = "...IPv4 Address from ipconfig...";
    mail.Subject = "this is a test email.";
    mail.Body = "this is my test email body";
    client.Send(mail);
person A.B.    schedule 15.03.2018