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 на стороне hmailserver?
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);
5 ответов
Ahh хорошо, что вам нужно сделать, это в 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 и 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
этой руководство поможет вам настроить пользовательские NetworkCredentials в HMailServer, как указано выше, надежда помогает кому-то.
я наткнулся на этот вопрос при попытке настроить hMailServer для работы с отправкой электронной почты с C#. Я попробовал следующее:
- C# SmtpClient - не работает с неявным SSL-см. Это вопрос и ответ
- AegisImplicitMail от здесь - не удалось заставить его работать со строками UTF-8 (у меня есть диакритика в моих строках)
- MailKit от здесь - очень мощный и зрелый, никаких проблем используя его
я нацелился на следующее:
- достойную безопасность
- возможность отправлять электронные письма основным поставщикам электронной почты (например, Google, Yahoo) и достигать Inbox
- возможность получать электронные письма от основных поставщиков электронной почты
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 are открыл, чтобы убедиться, что вы можете отправлять и получать электронную почту
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 и оставил неявные (мой компьютер и интернет).
хотя прошло 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);