有许多问题要求smtp服务器像Testing SMTP server is running via C#和Can I test SmtpClient before calling client.Send()?一样工作,他们通过向smtp服务器发送命令来检查它们。他们从不使用任何凭据进行测试。所以我想知道有没有办法检查这些登录名和密码在这个smtp服务器上是否有效而不发送邮件?
答案 0 :(得分:0)
答案 1 :(得分:0)
在处理此问题时,我最担心的是找到一种解决方案,无需发送电子邮件来检查凭据是否有效。因此,在尝试了一系列在线提供的解决方案之后,我想出了一个我自己可以接受的解决方案来测试电子邮件凭据:
我使用MailKit来帮助我。
public static bool ValidateCredentials(string username, string password, string server, int port, bool certificationValidation)
{
try
{
using (var client = new MailKit.Net.Smtp.SmtpClient())
{
try
{
client.ServerCertificateValidationCallback = (s, c, h, e) => certificationValidation;
client.Connect(server, port, false);
client.Authenticate(username, password);
client.Disconnect(true);
return true;
}
catch (Exception ex)
{
Console.WriteLine(string.Format("ValidateCredentials Exception: {0}", ex.Message));
}
}
}
catch (System.Exception ex)
{
Console.WriteLine(string.Format("ValidateCredentials Exception: {0}", ex.Message));
}
return false;
}