6

我只是想让我的 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 还是有办法在 hmailserver 端禁用 SSL?

MailMessage mail = new MailMessage("jlnt@ademo.net", "com", "NEW Item", emailBody);
SmtpClient smtp = new SmtpClient("1.1.1.250");
smtp.Port = 25;
NetworkCredential login = new NetworkCredential("ja@test.net", "dg");
smtp.Credentials = login;
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
smtp.Send(mail);
4

5 回答 5

6

啊,好吧,您要做的是在 HMailServer 中转到高级 IP 范围。创建一个新的 IP 范围,例如如果您是 192.168.1.2,则必须将范围设为 192.168.1.1-192.168.1.3,然后在底部取消选中所有必需的 smtp 身份验证框。

恼人的...

于 2013-02-11T00:59:31.263 回答
0

要启用安全连接以通过您的电子邮件提供商发送电子邮件,您必须更改端口号。

       MailMessage mail = new MailMessage("jlnt@ademo.net", "com", "NEW Item", emailBody);
        SmtpClient smtp = new SmtpClient("1.1.1.250");
        //smtp.Port =25;
        smtp.Port =587;
        NetworkCredential login = new NetworkCredential("ja@test.net", "dg");
        smtp.Credentials = login;
        smtp.EnableSsl = true;
        smtp.UseDefaultCredentials = false;
        smtp.Send(mail);   
于 2013-02-11T01:12:07.010 回答
0

我遇到了这个问题,我所做的是使用 localhost ip 和 EnableSsl 为 false

SmtpClient smtpClient = new SmtpClient();
            smtpClient.Host = "127.0.0.1";
            smtpClient.Credentials = new NetworkCredential("test@123test.com", "pass123");
            smtpClient.EnableSsl = false;

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

指南将帮助您在上面使用的 HMailServer 中设置自定义 NetworkCredentials,希望对某人有所帮助。

于 2015-03-01T10:40:28.103 回答
0

尽管自发布接受的答案以来已经过去了 7 年——我一开始也赞成它——我想强调的是,建议的解决方案会禁用整个身份验证过程,这是不必要的。问题在于:

smtp.UseDefaultCredentials = false;

只需删除该行,它应该可以工作。

我在这里为我发布了可行的解决方案(请注意,我没有使用 SSL):

    MailMessage mail = new MailMessage("a1@test.com", "foooo@gmail.com");
    SmtpClient client = new SmtpClient();
    client.Credentials = new NetworkCredential("a1@test.com", "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);
于 2018-03-15T11:19:25.240 回答
0

在尝试将 hMailServer 配置为从 C# 发送电子邮件时,我偶然发现了这个问题。我尝试了以下方法:

  • C# SmtpClient - 不适用于隐式 SSL - 请参阅此问题和答案
  • AegisImplicitMail from here - 无法使用 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 管理员运行诊断程序

使用允许手动配置各种设置的电子邮件客户端,例如每个协议的端口、安全性。我用过雷鸟。包括向外部提供商发送电子邮件和从他们那里接收电子邮件(我已经尝试过使用 Gmail)。

我没有更改 IP 范围,只保留了隐含的范围(我的电脑和 Internet)。

于 2016-12-24T07:54:20.690 回答