Я наткнулся на этот вопрос, когда пытался настроить 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