//发送命令“auth login\r\n”
ClientSocket.Send(System.Text.Encoding.Default.GetBytes("auth login\r\n"));
//接收响应
Rec(ClientSocket);
if (RespondInfo[0] != "334")
{
ClientSocket.Close();
throw new MyException("错误发生在认证!");
}
如果服务器要求验证客户端登录信息,客户端则发送账户和密码进行验证。
具体代码如下:
//发送用户名
OutUserStr = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(OutUserStr));
ClientSocket.Send(System.Text.Encoding.Default.GetBytes(OutUserStr + "\r\n"));
//接收响应
Rec(ClientSocket);
if (RespondInfo[0] != "334")
{
ClientSocket.Close();
throw new MyException("错误发生在用户名校验!");
}
//发送密码
OutPassword = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(OutPassword));
ClientSocket.Send(System.Text.Encoding.Default.GetBytes(OutPassword + "\r\n"));
//接收响应
Rec(ClientSocket);
if (RespondInfo[0] != "235")
{
ClientSocket.Close();
throw new MyException("错误发生在密码校验!");
}
2、 邮件发送是以MAIL FROM:指令开始。首先,客户端发出MAIL FROM:<发件人E-mail地址>的信息,若发件人的E-mail地址正确,会发出250 OK信息,否则会返回550 信息。
设计代码如下:
//发送命令“mail from:<发件人邮箱地址>\r\n”
ClientSocket.Send(System.Text.Encoding.Default.GetBytes("mail from:<" + AddressStr + ">\r\n"));
//接收响应
Rec(ClientSocket);
if (RespondInfo[0] != "250")
{
ClientSocket.Close();
throw new MyException("错误发生在发件人的认证!");
}
3、 随后客户端会发出RCPT TO:<发件人E-mail Address>指令,以代表收件人的E-mail地址,若正确,服务器返回250,否返回550信息。
代码如下:
for (int a = 0; a < ToCCBCCStrs.Length; a++)
{
//发送命令“rcpt to:<收件人邮箱地址>\r\n”
ClientSocket.Send(System.Text.Encoding.Default.GetBytes("rcpt to:<" + ToCCBCCStrs[a] + ">\r\n"));
//接收响应
Rec(ClientSocket);
if (RespondInfo[0] != "250")
{
ClientSocket.Close();
throw new MyException("错误发生在收件人的认证!");
}
}
4、 开始处理邮件标题及内容,客户端会开始先发送出DATA指令,以告知邮件服务器将要开始发送邮件标题及内容。若正确,会响应354信息,随后开始发送邮件标题及内容,每行以<CRLF>结尾。
代码如下:
//发送命令“data\r\n”
ClientSocket.Send(System.Text.Encoding.Default.GetBytes("data\r\n"));
//接收响应
Rec(ClientSocket);
if (RespondInfo[0] != "354")
{
ClientSocket.Close();
throw new MyException("错误发生在数据传输的初始化!");
}
//发送数据
PackMail();
ClientSocket.Send(System.Text.Encoding.Default.GetBytes(Content));
//接收响应
Rec(ClientSocket);
if (RespondInfo[0] != "250")
{
ClientSocket.Close();
throw new MyException("错误发生在数据的发送!");
}5、 发送邮件标题及内容后,必须发送一个特殊的字符串,以代表邮件内容发送结束,特殊字符串为:<CRLF>.<CRLF>。服务器返回250 OK信息表示发送成功。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>