C#POP3协议实现SSL验证登陆GMAIL
最近在折腾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的更多相关文章
- 一个基于POP3协议进行邮箱账号验证的类
最近老陈要针对企业邮箱做一些开发,以对接企业OA神马的,但企业邮箱唯独没有开放账号密码验证功能,很恼火!不得已,翻出早些年的Asp代码改编成了C#类,实现了一个C#下的通过POP3协议进行邮箱账号验证 ...
- C#基础--基于POP3协议的邮件接收和基于STMP的邮件发送
最近在用outlook同步邮件.对邮件协议有一点兴趣.于是就去收集了一些资料,学习了一下如何通过.net来实现邮件的收发. 一:SMTP协议 1.什么是SMTP协议: SMTP目前 ...
- 使用smtp和pop3 协议收发qq邮箱实验
email系统组件:MTA 消息传输代理,负责邮件的路由,队列和发送SMTP 简单邮件传输协议1 连接到服务器2 登陆3 发出服务请求4 退出POP:邮局协议RFC918 "邮局协议的目的是 ...
- Smtp协议与Pop3协议的简单实现
前言 本文主要介绍smtp与pop3协议的原理,后面会附上对其的简单封装与实现. smtp协议对应的RFC文档为:RFC821 smtp协议 SMTP(Simple Mail Transfer Pro ...
- 邮件实现详解(二)------手工体验smtp和pop3协议
上篇博客我们简单介绍了电子邮件的发送和接收过程,对参与其中的邮件服务器,邮件客户端软件,邮件传输协议也有简单的介绍.我们知道电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递必须 ...
- 使用ssh keys实现免验证登陆远程服务
使用ssh keys实现免验证登陆远程服务========================Created 星期四 10 五月 2018 引言------------------程序员或者服务器运维人员 ...
- 配置Tomcat使用https协议(配置SSL协议)
配置Tomcat使用https协议(配置SSL协议) 2014-01-20 16:38 58915人阅读 评论(3) 收藏 举报 转载地址:http://ln-ydc.iteye.com/blog/1 ...
- POP3协议分析
http://m.blog.csdn.net/bripengandre/article/details/2192111 POP3协议分析 第1章. POP3概述 POP3全称为Post Off ...
- android客户端向服务器端验证登陆方法的实现2
一.在上一篇文章中,我只是提到了其中一种方法来实现登陆 大家可以参见: http://www.apkbus.com/android-45004-1-1.html android获取web服务 ...
随机推荐
- PopupWindow+ListView
1. 获取打到数据 for (int i = 0; i < iocOutMakeMaterialSubmit.data.size(); i++) { dataListPopupWindow.ad ...
- BZOJ 1452 Count
长知识啦..二维BIT. #include<iostream> #include<cstdio> #include<cstring> #include<alg ...
- ecshop 删除随机版权
删除随机版权: js/commjon.js -> onload = function()函数
- 【英语】Bingo口语笔记(19) - 如何用英语叙旧
- 【自动化测试】PO思路
http://blog.csdn.net/liubofengpython/article/details/7720078
- 给新centos系统虚拟机配置网络服务
记录下今天新建虚拟机的过程吧. 镜像:CentOS-6.3-x86_64-minimal; 虚拟机版本: vm 8.0 LET'S----------------------->GO 手动新建一 ...
- C++模板实例掌握
前段时间重新学习C++,主要看C++编程思想和C++设计新思维.对模版的使用有了更进一层的了解,特总结如下: 下面列出了模版的常用情况: << '\n';} //参考:http://ww ...
- SSD Cloud Hosting–Linode-Mysql数据库的安装与配置
接着上一篇的话题:SSD Cloud Hosting - Linode的配置和部署,搭建Java环境 8.Mysql数据库的安装与配置 安装 检查yum里边有没有mysql: yum list|gre ...
- VMware 命令行下安装以及导入Ubuntu系统
前提: 鉴于个人PC性能太弱,考虑是否可以将在PC上搭建好的环境移植到高性能服务器上.想到后就干呗. 下载完对应操作系统的安装包后按如下步骤操作: 安装包名称:VMware-Workstation-F ...
- Steam即将正式加入人民币支付(转)
Valve将在2015年Q4和2016年Q1加入一批新的货币结算支持,其中包括了人民币,这意味着以后玩家将无需在跳转支付平台后并通过美元结算.这对中国玩家来说是喜是忧? 本文由爱玩网整理报道,转载请保 ...