C# 如何检索/协商SMTP服务器支持的安全方法和身份验证方法
我正在使用C#(.NET 4.0)和System.NET.Mail.SmtpClient类向SMTP服务器发送电子邮件。 现在,我能够向SMTP服务器发送一封电子邮件,并立即在我的Thunderbird收件箱文件夹中看到它 此测试未指定任何身份验证方法或安全方法。 但我认为,通常SMTP服务器需要某种身份验证 我想知道,是否可以询问SMTP服务器,它支持什么身份验证方法,然后协商使用所需的方法。 我正在考虑向SMTP服务器询问支持的身份验证方法,并获取一个列表,例如:C# 如何检索/协商SMTP服务器支持的安全方法和身份验证方法,c#,smtp,C#,Smtp,我正在使用C#(.NET 4.0)和System.NET.Mail.SmtpClient类向SMTP服务器发送电子邮件。 现在,我能够向SMTP服务器发送一封电子邮件,并立即在我的Thunderbird收件箱文件夹中看到它 此测试未指定任何身份验证方法或安全方法。 但我认为,通常SMTP服务器需要某种身份验证 我想知道,是否可以询问SMTP服务器,它支持什么身份验证方法,然后协商使用所需的方法。 我正在考虑向SMTP服务器询问支持的身份验证方法,并获取一个列表,例如: 无身份验证 密码,明文
- 无身份验证
- 密码,明文
- 密码,加密的
- Kerberos
- NTLM
- 连接上没有安全性
- STARTTLS
- SSL/TLS
有没有一种方法可以通过编程方式从SMTP服务器检索受支持的方法?有可能,但不能通过.NET类;相反,您需要使用套接字级别的连接将适当的EHLO请求发送到服务器,然后解析响应 您需要的套接字编程的详细信息如下: 您需要解析来自服务器的响应。SMTP AUTH上的Wikipedia条目有一个有用的示例对话框:
Wireshark()等实用程序可以方便地调试此类工作。谢谢,这对我帮助很大。我能够通过所提到的套接字级别连接获得支持的方法。:)