58同城北京网站建设,wordpress 自定义类型,游戏币网站建设,wordpress中文读音最近老陈要针对企业邮箱做一些开发#xff0c;以对接企业OA神马的#xff0c;但企业邮箱唯独没有开放账号密码验证功能#xff0c;很恼火#xff01;不得已#xff0c;翻出早些年的Asp代码改编成了C#类#xff0c;实现了一个C#下的通过POP3协议进行邮箱账号验证的类… 最近老陈要针对企业邮箱做一些开发以对接企业OA神马的但企业邮箱唯独没有开放账号密码验证功能很恼火不得已翻出早些年的Asp代码改编成了C#类实现了一个C#下的通过POP3协议进行邮箱账号验证的类而且还能完美支持SSL加密貌似很实用的样子分享给大家先 无废话直接放代码 1 // 2 // 老陈出击必属精品3 // 4 // Copyright © ymind.net. All rights reserved .5 // 官方网站http://ymind.net/6 // 版权所有彦铭工作室7 // 8 9 using System;10 using System.IO;11 using System.Net.Security;12 using System.Net.Sockets;13 using System.Text;14 15 namespace WindowsFormsApplication116 {17 /// summary18 /// 提供通过 POP3 协议进行电子信箱账号验证的功能。19 /// /summary20 public sealed class POP3AccountValidator21 {22 #region ValidateResults enum23 24 /// summary25 /// 表示验证结果的枚举值。26 /// /summary27 public enum ValidateResults28 {29 /// summary30 /// 未指定。31 /// /summary32 None 0,33 34 /// summary35 /// 连接失败。36 /// /summary37 ConnectFailed 1,38 39 /// summary40 /// 无效的登录账号。41 /// /summary42 InvalidUserName 2,43 44 /// summary45 /// 无效的登录密码。46 /// /summary47 InvalidPassword 3,48 49 /// summary50 /// 登录成功。51 /// /summary52 Success 4,53 54 /// summary55 /// 验证过程发生异常。56 /// /summary57 Error 5,58 }59 60 #endregion61 62 private const string _CRLF \r\n;63 private readonly bool _useSSL;64 65 /// summary66 /// 初始化 see crefPOP3AccountValidator/ 类的新实例。67 /// /summary68 /// param nameserver指定 POP3 服务器。/param69 public POP3AccountValidator(string server) : this(server, 110) { }70 71 /// summary72 /// 初始化 see crefPOP3AccountValidator/ 类的新实例。73 /// /summary74 /// param nameserver指定 POP3 服务器。/param75 /// param nameport指定 POP3 服务器端口号。/param76 public POP3AccountValidator(string server, int port) : this(server, port, false) { }77 78 /// summary79 /// 初始化 see crefPOP3AccountValidator/ 类的新实例。80 /// /summary81 /// param nameserver指定 POP3 服务器。/param82 /// param nameport指定 POP3 服务器端口号。/param83 /// param nameuseSSL指定一个值该值指示验证过程是否使用 SSL 加密协议。/param84 public POP3AccountValidator(string server, int port, bool useSSL)85 {86 if (String.IsNullOrWhiteSpace(server)) throw new ArgumentOutOfRangeException(server);87 if (port 1 || port 65535) throw new ArgumentOutOfRangeException(port);88 89 this.Server server;90 this.Port port;91 this._useSSL useSSL;92 }93 94 /// summary95 /// 获取 POP3 服务器。96 /// /summary97 public string Server { get; private set; }98 99 /// summary
100 /// 获取 POP3 服务器端口号。
101 /// /summary
102 public int Port { get; private set; }
103
104 private static ValidateResults _Validate(Stream stream, string username, string password)
105 {
106 var data USER username _CRLF;
107
108 using (var reader new StreamReader(stream))
109 {
110 if (!reader.ReadLine().Contains(OK)) return ValidateResults.ConnectFailed;
111
112 var charData Encoding.ASCII.GetBytes(data);
113
114 stream.Write(charData, 0, charData.Length);
115
116 if (!reader.ReadLine().Contains(OK)) return ValidateResults.InvalidUserName;
117
118 data PASS password _CRLF;
119 charData Encoding.ASCII.GetBytes(data);
120
121 stream.Write(charData, 0, charData.Length);
122
123 return reader.ReadLine().Contains(OK) ? ValidateResults.Success : ValidateResults.InvalidPassword;
124 }
125 }
126
127 /// summary
128 /// 验证电子信箱账号。
129 /// /summary
130 /// param nameusername电子信箱账号。/param
131 /// param namepassword电子信箱密码。/param
132 /// returns返回 see crefValidateResults/ 枚举值之一。/returns
133 public ValidateResults Validate(string username, string password)
134 {
135 if (username null) throw new ArgumentNullException(username);
136 if (password null) throw new ArgumentNullException(password);
137
138 try
139 {
140 using (var tcpClient new TcpClient(this.Server, this.Port))
141 {
142 using (var tcpStream tcpClient.GetStream())
143 {
144 if (!this._useSSL) return _Validate(tcpStream, username, password);
145
146 using (var sslStream new SslStream(tcpStream, false))
147 {
148 sslStream.AuthenticateAsClient(this.Server);
149
150 return _Validate(sslStream, username, password);
151 }
152 }
153 }
154 }
155 catch
156 {
157 return ValidateResults.Error;
158 }
159 }
160 }
161 } 转载于:https://www.cnblogs.com/ymind/p/3384534.html