Ich möchte MailKit verwenden, um eine E-Mail über unseren Exchange-Server mit den Anmeldeinformationen des Prozesses zu senden.
Das Erstellen eines System.Net.Mail.SmtpClient und NetworkCredential mit Domain/Benutzername/Passwort funktioniert, aber während der Verwendung von MailKit.Net.Smtp.SmtpClient und NetworkCredential funktioniert es nicht. Ausnahme wie werfen
Ausnahmemeldung: Der SMTP-Server unterstützt keine Authentifizierung. Trace Message: at MailKit.Net.Smtp.SmtpClient.d__73.MoveNext() --- Ende des Stack-Trace vom vorherigen Ort, an dem eine Ausnahme ausgelöst wurde --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System .Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Aufgabenaufgabe) bei MailKit.Net.Smtp.SmtpClient.Authenticate(Encoding encoding, ICredentials-Anmeldeinformationen, CancellationToken CancellationToken) bei MailKit.MailService.Authenticate(ICredentials-Anmeldedaten. SendMail_MailKit_WithDomain() in D:\Work\SMTP_EmailCheck\SMTP_EmailCheck\Program.cs:line 123
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var mailMessage = new MimeMessage();
mailMessage.From.Add(new MailboxAddress(fromMailAddress));
mailMessage.To.Add(new MailboxAddress(toMailAddress));
mailMessage.Subject = "SendMail_MailKit_WithDomain";
mailMessage.Body = new TextPart(TextFormat.Plain)
{
Text = "Hello"
};
using (var smtpClient = new MailKit.Net.Smtp.SmtpClient())
{
smtpClient.Connect("MailServer", 25, MailKit.Security.SecureSocketOptions.None);
var creds = new NetworkCredential("UserName", "Password", "Domain");
smtpClient.Authenticate(creds);
smtpClient.Send(mailMessage);
smtpClient.Disconnect(true);
}
Danke im Voraus
Die Meldung "Der SMTP-Server unterstützt keine Authentifizierung." Ausnahme bedeutet, dass Ihr Server keine Authentifizierung unterstützt. Mit anderen Worten, es akzeptiert keinen Benutzernamen und kein Passwort. Sie müssen es anonym verwenden.
Obwohl Sie dem System.Net.Mail.SmtpClient einige NetworkCredentials bereitgestellt haben, bedeutet dies nicht, dass der SmtpClient sie verwendet hat. Sie haben dem System.Net.Mail.SmtpClient gerade Informationen bereitgestellt, die Sie nicht benötigen.
TL;DR: Kümmere dich nicht darum, anzurufen client.Authenticate (creds);
Ändern Sie Ihren Code wie folgt:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var mailMessage = new MimeMessage();
mailMessage.From.Add(new MailboxAddress(fromMailAddress));
mailMessage.To.Add(new MailboxAddress(toMailAddress));
mailMessage.Subject = "SendMail_MailKit_WithDomain";
mailMessage.Body = new TextPart(TextFormat.Plain)
{
Text = "Hello"
};
using (var smtpClient = new MailKit.Net.Smtp.SmtpClient())
{
smtpClient.Connect("MailServer", 25, MailKit.Security.SecureSocketOptions.None);
smtpClient.Send(mailMessage);
smtpClient.Disconnect(true);
}
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen