Я хочу получать и обрабатывать исключения, когда MailKit SmtpClient.Send () не удается отправить на неверный адрес электронной почты. Но это не исключение.
Я попытался отправить на недействительный адрес электронной почты специально, чтобы посмотреть, смогу ли я поймать какие-либо исключения. Разве MailKit SmtpClient просто не выдает никаких исключений при неудачной отправке? Если вам интересно, зачем мне это нужно, я хочу вернуть клиентскому приложению сообщение об ошибке, что некоторые электронные письма были недействительными.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using Hjarnkraft.Backend.Models;
using MailKit.Net.Smtp;
using MimeKit;
using MimeKit.Text;
namespace Hjarnkraft.Backend.Helpers
{
public class SMTPHelper
{
SMTPSettings smtpSettings;
public SMTPHelper(SMTPSettings smtpSettings)
{
this.smtpSettings = smtpSettings;
}
public List<string> Send(List<PreparedEmailModel> preparedEmails)
{
using (var emailClient = new SmtpClient())
{
var failedEmails = new List<string>();
//The last parameter here is to use SSL (Which you should!)
emailClient.Connect(smtpSettings.Host, 587);
//Remove any OAuth functionality as we won't be using it.
emailClient.AuthenticationMechanisms.Remove("XOAUTH2");
emailClient.Authenticate(smtpSettings.CredentialsUser, smtpSettings.CredentialsPassword);
foreach (var preparedEmail in preparedEmails)
{
var message = new MimeMessage();
message.From.Add(new MailboxAddress(preparedEmail.FromEmail));
message.To.Add(new MailboxAddress(preparedEmail.ToEmail));
message.Subject = preparedEmail.Subject;
//We will say we are sending HTML. But there are options for plaintext etc.
message.Body = new TextPart(TextFormat.Html)
{
Text = preparedEmail.Body
};
try
{
emailClient.Send(message);
}
catch (Exception e)
{
failedEmails.Add(preparedEmail.ToEmail);
}
}
emailClient.Disconnect(true);
return failedEmails;
}
}
}
}
Ожидается: MailKit SmtpClient.Send () должен генерировать исключение при отправке на недействительный адрес электронной почты.
Результат: исключений не выдается, даже если вы пытаетесь указать неверный адрес электронной почты.