C# 使用smtp对intranet用户进行身份验证

C# 使用smtp对intranet用户进行身份验证,c#,.net,authentication,smtp,pop3,C#,.net,Authentication,Smtp,Pop3,我在我们公司收集了大约400名使用电子邮件的用户,我们正在为他们建立一个内部网,我在应用层使用.Net Framework(C#)。我们希望使用这些用户对其电子邮件的相同凭据对其进行身份验证,我们的电子邮件提供商没有此类服务,因此我想到使用SMTP服务器对其进行身份验证(这需要身份验证) 我在类中搜索了Authenticate()方法,但没有结果,无法仅进行身份验证。以前有人解决过这种问题吗?我想我必须自己打开SMTP服务器的套接字并发送命令,但可能有一种更简单的方法。既然您有一个SMTP服务器

我在我们公司收集了大约400名使用电子邮件的用户,我们正在为他们建立一个内部网,我在应用层使用.Net Framework(C#)。我们希望使用这些用户对其电子邮件的相同凭据对其进行身份验证,我们的电子邮件提供商没有此类服务,因此我想到使用SMTP服务器对其进行身份验证(这需要身份验证)


我在类中搜索了
Authenticate()
方法,但没有结果,无法仅进行身份验证。以前有人解决过这种问题吗?我想我必须自己打开SMTP服务器的套接字并发送命令,但可能有一种更简单的方法。

既然您有一个SMTP服务器,我假设您也有一个POP3服务器。假设POP3和SMTP的凭据相同,我认为我也很安全

如果我的假设是正确的(很可能),您可以通过POP3而不是SMTP对其进行身份验证

因此,您可以使用该类,该类提供了多种身份验证方法:

这样,您的代码将:

  • 连接
  • 验证(检查异常)
  • 断开

  • 你们都准备好了

    对SMTP服务器使用SmtpClient请求服务。应用程序应仅指定是否使用Windows身份验证(根据内部网的配置,将使用Kerberos或NTLM)或凭据规范,以及是否使用SSL

    对于应用程序身份验证,您可以参考。更具体地说,您可以使用该属性

    在尝试调用SMTP服务器之前,如果要使用Windows身份验证,请尝试以下操作:

    SmtpClient client = new SmtpClient(server, port);
    client.Credentials = CredentialCache.DefaultNetworkCredentials;
    
    然后让SMTP服务器授权用户是否可以实际执行尝试的操作

    如果您想说,禁用操作按钮,因为SMTP服务器将拒绝用户尝试的操作,而您正试图主动阻止用户做他不能做的事情,那么在点击SMTP服务器之前,该拒绝必须是确定的(也就是说,您不会简单地依赖SMTP服务器来告诉您这一点;您需要某种类型的业务安全层)