最近在折腾POP3协议,登陆pop.qq.com和pop.163.com没有什么问题,于是就想着登陆pop.gmail.com,结果失败了。经查,发现gmail的pop3端口不是110,而是995。于是改了端口,但是登陆还是失败了。后面查了资料,发现原来是gmail采用的是ssl验证,不能直接连接。那C#要如何实现SSL连接呢?查了很多资料后,发现可以通过SslStream来实现。

下面是SslStream实现连接的代码

  private StreamReader pop3StreamReader_ = null;
private SslStream pop3Stream_ = null; public void connect(string host, int port)
{
try
{ TcpClient popServer = new TcpClient(host, port); pop3Stream_ = new SslStream(popServer.GetStream(), false);
pop3Stream_.AuthenticateAsClient(host);
isConnected_pro = true;
pop3StreamReader_ = new StreamReader(pop3Stream_, encoding_pro); }
catch (System.Exception ex)
{
exception_pro = ex;
isConnected_pro = false;
}
}

其中pop3StreamReader_ 是用来接收响应的数据的。

那SSL连接成功后,要如何发送数据呢?可以利用SslStream的write方法。下面是发送数据的实现

   public bool send(string sendStr)
{
try
{
exception_pro = null;
pop3Stream_.Write(encoding_pro.GetBytes(sendStr));
return true;
}
catch (System.Exception ex)
{
exception_pro = ex;
return false;
}
}

那发了数据之后,又要如何接收呢?可以利用pop3StreamReader_的ReadLine方法。

下面是接收数据的实现

/// <summary>
/// Receive one line data.
/// </summary>
/// <returns></returns>
public string receive()
{
string receiveStr = "";
receiveStr = pop3StreamReader_.ReadLine();
return receiveStr;
}

下面是对于上面方法的一个简单调用

  private void buttonSsl_Click(object sender, EventArgs e)
{ SslSp sslSp = new SslSp();
sslSp.connect("pop.gmail.com", 995);
string receiveStr = sslSp.receive();
MessageBox.Show(receiveStr); sslSp.send("user mysuer\r\n");
receiveStr = sslSp.receive();
MessageBox.Show(receiveStr); sslSp.send("pass mypassword\r\n");
receiveStr = sslSp.receive();
MessageBox.Show(receiveStr);
}

在实际应用时,建议对SSL连接增加一个disconnect的断开连接函数,以方便管理。

												

C#POP3协议实现SSL验证登陆GMAIL的更多相关文章

  1. 一个基于POP3协议进行邮箱账号验证的类

    最近老陈要针对企业邮箱做一些开发,以对接企业OA神马的,但企业邮箱唯独没有开放账号密码验证功能,很恼火!不得已,翻出早些年的Asp代码改编成了C#类,实现了一个C#下的通过POP3协议进行邮箱账号验证 ...

  2. C#基础--基于POP3协议的邮件接收和基于STMP的邮件发送

    最近在用outlook同步邮件.对邮件协议有一点兴趣.于是就去收集了一些资料,学习了一下如何通过.net来实现邮件的收发.    一:SMTP协议  1.什么是SMTP协议:       SMTP目前 ...

  3. 使用smtp和pop3 协议收发qq邮箱实验

    email系统组件:MTA 消息传输代理,负责邮件的路由,队列和发送SMTP 简单邮件传输协议1 连接到服务器2 登陆3 发出服务请求4 退出POP:邮局协议RFC918 "邮局协议的目的是 ...

  4. Smtp协议与Pop3协议的简单实现

    前言 本文主要介绍smtp与pop3协议的原理,后面会附上对其的简单封装与实现. smtp协议对应的RFC文档为:RFC821 smtp协议 SMTP(Simple Mail Transfer Pro ...

  5. 邮件实现详解(二)------手工体验smtp和pop3协议

    上篇博客我们简单介绍了电子邮件的发送和接收过程,对参与其中的邮件服务器,邮件客户端软件,邮件传输协议也有简单的介绍.我们知道电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递必须 ...

  6. 使用ssh keys实现免验证登陆远程服务

    使用ssh keys实现免验证登陆远程服务========================Created 星期四 10 五月 2018 引言------------------程序员或者服务器运维人员 ...

  7. 配置Tomcat使用https协议(配置SSL协议)

    配置Tomcat使用https协议(配置SSL协议) 2014-01-20 16:38 58915人阅读 评论(3) 收藏 举报 转载地址:http://ln-ydc.iteye.com/blog/1 ...

  8. POP3协议分析

    http://m.blog.csdn.net/bripengandre/article/details/2192111 POP3协议分析 第1章.     POP3概述 POP3全称为Post Off ...

  9. android客户端向服务器端验证登陆方法的实现2

    一.在上一篇文章中,我只是提到了其中一种方法来实现登陆 大家可以参见: http://www.apkbus.com/android-45004-1-1.html      android获取web服务 ...

随机推荐

  1. C语言之内存覆盖

    在实现memcpy函数的时候,我们说过要考虑内存覆盖的问题,到底什么是内存覆盖呢,他的出现对程序到底有什么影响呢?我们又要如何去解决这种问题的发生? 首先先看一般人经常实现的memcpy函数: #in ...

  2. Maven之 学习资料

    整理maven的学习资料,长期更新. 一.视频 1.孔浩老师的  maven视频教程 二.博客 1.黄勇:     maven那些事儿 使用 OSC Maven 仓库 三.书籍 1.<Maven ...

  3. 自己构建MVC中的M

    /** * @ description Model MVC中M 数据模型 * @ Object * @ public * @ create method IE不支持 */ if(typeof Obje ...

  4. ios ViewController 页面跳转

    从一个Controller跳转到另一个Controller时,一般有以下2种: 1.利用UINavigationController,调用pushViewController,进行跳转:这种采用压栈和 ...

  5. HDU 4832 Chess

    Chess Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  6. YII Framework学习教程-YII的日志

    日志的作用(此处省略1000字) YII中的日志很好很强大,允许你把日志信息存放到数据库,发送到制定email,存放咋文件中,意见显示页面是,甚至可以用来做性能分析. YII中日志的基本配置:/yii ...

  7. js画线

    <body> <div id="main"> </div> <div id="fd" style="filt ...

  8. HTTP协议学习笔记-1

    基本概念 首先需要了解几个概念: WEB客户端和服务器: WEB客户端当然就是指我们用使用的某个网站 服务器就是WEB资源源头,我们从服务器去请求数据,服务器把请求的数据发给WEB客户端 媒体类型: ...

  9. 横版动作MOBA《超宇宙》首测试玩曝光 详解游戏特色(转)

    http://play.163.com/15/0911/11/B37RHHO100314J6L.html

  10. leetcode:Longest Substring Without Repeating Characters

    Given a string, find the length of the longest substring without repeating characters. For example, ...