有很多问题询问SMTP服务器是否可行,例如 Testing SMTP server is running via C# 和 在调用client.Send()之前可以测试SmtpClient吗? ,他们通过向SMTP服务器发送命令来检查是否正常工作。对于测试目的,他们从未使用任何凭据。所以我想知道有没有办法在不发送邮件的情况下检查这些登录名和密码是否有效于此SMTP服务器?
在我处理这个问题时最担心的是必须发送电子邮件来检查凭据是否有效。因此,在尝试了很多在线提供的解决方案后,我想出了自己可行的方法来测试电子邮件凭据:
我使用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;
}