检查电子邮件凭据是否存在

发布于 2024-11-25 23:04:15 字数 382 浏览 1 评论 0原文

有很多问题询问 smtp 服务器是否像 测试 SMTP 服务器是否通过 C# 运行我可以测试吗SmtpClient 在调用 client.Send()? 之前,它们通过向 smtp 服务器发送命令来进行检查。他们从不使用任何凭据进行测试。所以我想知道是否有一种方法可以在不发送邮件的情况下检查这些登录名和密码在此 smtp 服务器上是否有效?

There are dozen of questions asking is smtp server working like Testing SMTP server is running via C# and Can I test SmtpClient before calling client.Send()? and they do they work of checking by sending commands to smtp servers. They never use any credentials for testing purposes. So I'm wondering is there a way to check are these login and password valid on this smtp-server without sending a mail?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故人爱我别走 2024-12-02 23:04:15

当我处理这个问题时,我最关心的是找到一种解决方案,让我不必发送电子邮件来检查凭据是否有效。因此,在尝试了一系列在线提供的解决方案之后,我想出了自己可以接受的解决方案来测试电子邮件凭据

我使用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;
    }

My big concern when I was working on this issue is to find a solution where I do not have to send email to check if the credentials are valid or not. So after trying a bunch of the solutions offered online, I came up with my own acceptable one to test email credentials :

I use MailKit to help me out.

    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;
    }
烙印 2024-12-02 23:04:15

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

看一下下面的内容:

如何验证 smtp 凭据发送邮件之前?

SMTP doesn't allow you login without sending an email.

have a look at the below:

How to validate smtp credentials before sending mail?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文