检查电子邮件凭据存在

时间:2011-07-25 10:40:08

标签: c# smtp credentials

有许多问题要求smtp服务器像Testing SMTP server is running via C#Can I test SmtpClient before calling client.Send()?一样工作,他们通过向smtp服务器发送命令来检查它们。他们从不使用任何凭据进行测试。所以我想知道有没有办法检查这些登录名和密码在这个smtp服务器上是否有效而不发送邮件?

2 个答案:

答案 0 :(得分:0)

SMTP不允许您在不发送电子邮件的情况下登录。

看看下面的内容:

How to validate smtp credentials before sending mail?

答案 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;
    }