使用c#+IMap实现收取163邮件

最近我要做一个爬虫。这个爬虫需要如下几个步骤:

1 填写注册内容(需要邮箱注册)

2 过拖拽验证码(geetest)

3 注册成功会给邮箱发一封确认邮箱

4 点击确认邮箱中的链接 完成注册

我这里就采用163邮箱注册。

邮箱协议有 pop3 和 imap 和 smtp

我试了pop3  不能够筛选邮件 例如筛选未读 和 发件人这2个条件 所以放弃用pop3

imap协议是支持的。

我就找了一个开源的第三方lib:S22.Imap

用法很简单:

public void Test163()
    {
      var imapServer = "imap.163.com";
      var port = 993;
      using (ImapClient client = new ImapClient(imapServer, port, "xxxx@163.com", "pwd", AuthMethod.Login, true))
      {
        // Returns a collection of identifiers of all mails matching the specified search criteria.
        IEnumerable<uint> uids = client.Search(SearchCondition.Unseen());
        // Download mail messages from the default mailbox.
        IEnumerable<MailMessage> messages = client.GetMessages(uids,FetchOptions.HtmlOnly);

        Console.WriteLine("We are connected!");
      }

    }

发现 在login的时候 报错了:

提示“NO Select Unsafe Login. Please contact kefu@188.com for help”。

163邮箱也会收到一个告警邮件

经过查证 发现得需要在发送 login 命令之前 得先发送 id 命令

至于为什么要这么做 我的理解是得先伪装成普通的客户端吧(有理解错误请指出谢谢)

我fork了一份SS2.imap的代码 打算兼容163的这个特殊情况改掉源码

然后走Login方法就不会报错了

Github地址:https://github.com/yuzd/S22.Imap

另外附上使用smtp发送邮件的实例

protected void Button2_Click(object sender, EventArgs e)
  {
    System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
    client.Host = "smtp.163.com";//使用163的SMTP服务器发送邮件
    client.UseDefaultCredentials = true;
    client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
    client.Credentials = new System.Net.NetworkCredential("用户名", "密码");//163的SMTP服务器需要用163邮箱的用户名和密码作认证,如果没有需要去163申请个,
    //这里假定你已经拥有了一个163邮箱的账户,用户名为abc,密码为*******
    System.Net.Mail.MailMessage Message = new System.Net.Mail.MailMessage();
    Message.From = new System.Net.Mail.MailAddress("上述用户名密码所对应的邮箱地址");//这里需要注意,163似乎有规定发信人的邮箱地址必须是163的,而且发信人的邮箱用户名必须和上面SMTP服务器认证时的用户名相同
    //因为上面用的用户名abc作SMTP服务器认证,所以这里发信人的邮箱地址也应该写为abc@163.com
    Message.To.Add("目标邮箱地址");//将邮件发送给Gmail
    //Message.To.Add("123456@qq.com");//将邮件发送给QQ邮箱
    Message.Subject = "customer feedback";
    Message.Body = "customer feedback content";
    Message.SubjectEncoding = System.Text.Encoding.UTF8;
    Message.BodyEncoding = System.Text.Encoding.UTF8;
    Message.Priority = System.Net.Mail.MailPriority.High;
    Message.IsBodyHtml = true;
    client.Send(Message);
  }
(0)

相关推荐

  • 用PHP读取IMAP邮件

    //这个例子可以练习关于IMAP的函数//但是如果真的要写WEBMAIL,那么要考虑的东西就不止这些了--孤狼 login.php3  <?php if (!$PHP_AUTH_USER) {  Header("WWW-authenticate: basic realm="邮件客户检查"");  Header("HTTP/1.0 401 Unauthorized");  } else {  $MYDIR=ereg_replace("

  • PHP基于IMAP收取邮件的方法示例

    本文实例讲述了PHP基于IMAP收取邮件的方法.分享给大家供大家参考,具体如下: 因需要处理公司企业邮箱被退信邮件问题:刚开始的思路是通过模拟登陆,对邮件进行抓取,(这种事情对我来说,做过了很多次,轻车熟路),不过邮箱还是有点复杂的, 后来想起做邮件发送时有用到smtp来发送邮件,记得也可以收取邮件,在腾讯企业邮箱帮助http://service.exmail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1000584 看到IMAP和P

  • Java+Nginx实现POP、IMAP、SMTP邮箱代理服务

    这篇文章介绍了Java+Nginx实现POP.IMAP.SMTP邮箱代理服务,我们本次使用的环境为Centos7下,java程序我们通过eclipse导出的war包运行在linux下的tomcat下执行的,具体见下: 环境介绍: Hostname:java.iternalsoft.com IP:192.168.2.163 Roles: Proxy Server OS:Centos7 我们通过以下命令来修改新安装的服务器信息: Hostnamectl set-hostname customname

  • c#使用S22.Imap收剑灵激活码邮件代码示例(imap收邮件)

    复制代码 代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using S22.Imap; namespace _163pop3{    public partial class For

  • c#使用IMap收取163邮件的方法示例

    前言 IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一.不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作.所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的. 最近我要做一个爬虫.这个爬虫需要如下几个步骤: 1 填写注册内容(需要邮箱注册) 2 过拖拽验证码(ge

  • PHP基于imap获取邮件实例

    本文实例讲述了PHP基于imap获取邮件的方法.分享给大家供大家参考.具体实现方法如下: imap是一款邮件交互访问的协议了,下面是实例主要利用php imap模块来快速获取邮件,列出所有目录,代码如下: 复制代码 代码如下: $host = '{imap.mail.yahoo.com:993/ssl}'; $user = 'user@yahoo.com'; $pass = 'password'; $inbox = imap_open($host, $user, $pass); $mailbox

  • 使用c#+IMap实现收取163邮件

    最近我要做一个爬虫.这个爬虫需要如下几个步骤: 1 填写注册内容(需要邮箱注册) 2 过拖拽验证码(geetest) 3 注册成功会给邮箱发一封确认邮箱 4 点击确认邮箱中的链接 完成注册 我这里就采用163邮箱注册. 邮箱协议有 pop3 和 imap 和 smtp 我试了pop3  不能够筛选邮件 例如筛选未读 和 发件人这2个条件 所以放弃用pop3 imap协议是支持的. 我就找了一个开源的第三方lib:S22.Imap 用法很简单: public void Test163() { va

  • 提示Outlook/Foxmail收取163邮件失败:ERR 您没有权限使用pop3功能

    用outlook和foxmail总无法接收163邮件,汉,原来是他们不给我使用pop3功能了新申请的163,126邮箱用Jmail发送邮件老是不成功,用Outlook/Foxmail收取邮件也是失败,提示:ERR 您没有权限使用pop3功能.最终在http://help.163.com/找了原因: 复制代码 代码如下: "06年11月份后"新"申请的163免费邮箱暂时无法使用POP和SMTP功能,需要开通邮箱伴侣或参加一些不定期举办的活动后才可以使用客户端功能."

  • Discuz!5.0升级Discuz5.5的图文教程第1/2页

    Discuz!5.5 正式版即将发布,相信大家很想把自己的 Discuz!5.0 论坛升级为 Discuz!5.5 ,下面我就为大家详细讲解一下 Discuz!5.0=>Discuz!5.5 的升级过程. 下面按三个部分为大家讲解: (一)升级前的准备    1.下载正式版 Discuz!5.5 到本地或服务器上,如图 1 所示: 1.jpg (38.71 KB) 2007-3-9 10:06 注:这里需要注意下载跟您原来的论坛一样字符集的版本,比如您原来用的是 GBK版的Discuz!5.0

  • linux脚本实现自动发送和收取邮件的设置方法

    1. 命令行模式下的发送邮件 1.1 安装sendemail 2.2 使用sendemail和举例 2. 命令行模式下的收取邮件 2.1 安装getmail4 2.2 配置getmail4和简单举例 2.3 用munpack从邮件中抽取附件 1. 命令行模式下的发送邮件 1.1 安装sendemail 在Ubuntu下可以用新立得软件包管理器搜索安装,或者在终端运行: sudo apt-get install sendemail 建议在安装前先安装另外两个包:libio-socket-ssl-p

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

    上篇博客我们简单介绍了电子邮件的发送和接收过程,对参与其中的邮件服务器,邮件客户端软件,邮件传输协议也有简单的介绍.我们知道电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递必须遵守的规则便是邮件传输协议.SMTP协议定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则.POP3/IMAP协议定义了邮件客户端软件和POP3邮件服务器的通信规则.这篇博客我们就来手工体验SMTP和POP3协议的奥秘. 1.使用Smtp协议手工发送邮件 SMTP

  • 邮件收发原理你了解吗? 邮件发送基本过程与概念详解(一)

    相信大家在日常工作生活中少不了和邮件打交道,比如我们会用邮件进行信息交流,向上级汇报日常工作:再比如大家熟悉的某个WEB系统注册阶段,通常会有一个功能,点击发送到目标邮箱的链接完成账户激活.但是邮件发送的原理是什么?邮件是如何发送的呢?本系列教程将会讲解邮件的基本常识与概念,邮件的协议以及邮件服务器的工作原理,然后用JavaMail 发送邮件的基本实现过程,邮件内嵌图片等高级邮件技巧.相信大家看完后,一定会有所收获. 1.电子邮件的发送和接收过程 和以往博客一样,LZ这里先给出用户A从QQ邮箱发

  • 利用python发送和接收邮件

    关于电子邮件 大学之前,基本不用邮箱,所以基本感觉不到它的存在,也不知道有什么用:然而大学之后,随着认识的人越来越多,知识越来越广泛,邮箱已然成为很重要的通讯工具,大学一些课程作业需要有邮箱发给老师,注册网站需要邮箱,找工作也需要邮箱:那么电子邮箱是什么原理呢? 发送邮件 SMTP协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.SMTP协议属于TCP/IP协议簇,它帮助每台计算

随机推荐