Hmailserver C#SMTP
我只是想让我的hmailserver从我的C#程序发送邮件。让我头疼的是SSL部分 我最初遇到此错误:Hmailserver C#SMTP,c#,smtp,hmail-server,C#,Smtp,Hmail Server,我只是想让我的hmailserver从我的C#程序发送邮件。让我头疼的是SSL部分 我最初遇到此错误:SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要SMTP身份验证。 所以我添加了:smtp.enablesl=true;现在我发现服务器不支持安全连接。 这是我的密码,这快把我逼疯了。我是否必须创建自己的SSL,或者是否有办法在hmailserver端禁用SSL MailMessage mail = new MailMessage("jlnt@ademo.net", "c
SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:需要SMTP身份验证。
所以我添加了:smtp.enablesl=true;现在我发现服务器不支持安全连接。
这是我的密码,这快把我逼疯了。我是否必须创建自己的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);
啊,好的,你要做的是在HMailServer中转到高级ip范围。创建一个新的IP范围,例如,如果您选择192.168.1.2,则必须将范围设置为192.168.1.1-192.168.1.3,然后在底部取消选中所有必需的smtp身份验证框
烦人的…要启用安全连接以通过电子邮件提供商发送电子邮件,您必须更改端口号
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);
我遇到了这个问题,我所做的是使用localhost ip并使SSL为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中设置自定义网络凭据,如上所述,希望对其他人有所帮助。我在尝试配置HMailServer以从C#发送电子邮件时遇到了这个问题。我尝试了以下方法:
- C#SmtpClient-不适用于隐式SSL-请参见此部分并给出答案
- AegisImplicitMail from-无法使用UTF-8字符串(我的字符串中有变音符号)
- 来自的MailKit-非常强大和成熟,使用它没有问题
- 体面的安全
- 能够向主流电子邮件提供商(如谷歌、雅虎)发送电子邮件并访问收件箱
- 能够接收来自主流电子邮件提供商的电子邮件
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);
}
}
3) 预C#测试
从hMailServer管理员运行诊断
使用允许手动配置各种设置(如每个协议的端口、安全性)的电子邮件客户端。我用过雷鸟。包括向外部提供商发送电子邮件和接收他们的电子邮件(我已经尝试过使用Gmail)
我没有改变IP范围,只保留了隐含的IP范围(我的计算机和互联网)。尽管发布接受的答案已经过去了7年——我在一开始也对其进行了投票——但我想强调的是,建议的解决方案禁用了整个不必要的身份验证过程。问题在于线路与:
smtp.UseDefaultCredentials = false;
只要拆下那条线,它就会工作
我在这里发布了我的工作解决方案(请注意,我没有使用SSL):
也许在玩hmailserver的选项?我使用hmailserver已经多年了,我的c#程序中没有ssl。@UweKeim好的,哪些选项?我不想要SSL我只想把基本邮件发送到另一个帐户我知道这是一个旧的线程,但对于未来的谷歌,我只想补充一点,你还需要注意IP范围的优先级。如果多个范围匹配,则使用优先级最高的范围。
smtp.UseDefaultCredentials = false;
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);