一般来说,如果现实中你有这样一种需求“假如你是褥羊毛的羊毛党,你某日发现了一个app有一个活动,通过邮箱注册账号激活可以领5元红包,而恰恰你手上又有一批邮箱可用,那么批量获取邮箱中的激活链接去激活则是你一个很大工作量的内容”,现在问题已经出现了,那么我在这里给大家提供一些解决方案思路和结果。

首先我想到的是通过一些爬虫技术模拟登录进入邮箱获取邮件内容,我想一般人的解决思路也都是这样的吧。但是这样有一系列的难题,本事爬虫也不会,网上找了一下案例多是别人发的部分代码,而且相互转载的特别多(题外话,真正的一个需求解决方案我建议拆分到各个技术点去上网查是最优办法,而不是一开始直接网上找),这里这种思路我就不继续说一下去了,我之前也在网上找了一些别人php些的模拟登录邮箱,可能时间比较久了,现在根本没法用,故放弃。

其次还有找到一种可以满足需求的办法,IMAP协议获取邮件内容,这种方法前提邮箱设置过一些权限,比如:

不过问题不大,一般邮箱协议默认有的,我这里现在有一个栗子是,获取hotmail邮箱的激活链接的,代码如下

 [HttpPost]
public IActionResult GetLink([FromBody] JObject value)
{
try
{
string link = "";
string mail = value["mail"].Value<string>();
string pwd = value["pwd"].Value<string>();
IList<string> emailLst = new List<string>();
using (ImapClient client = new ImapClient("imap-mail.outlook.com", , mail, pwd, AuthMethod.Login, true))
{ IEnumerable<uint> uids = client.Search(SearchCondition.All(), "junk");
// 也可以使用通过其它条件进行检索你的邮件
if (uids.Count() > )
{
System.Net.Mail.MailMessage msg = client.GetMessage(uids.Single(), true, "junk");
string body = msg.Body; Regex reg = new Regex(@"((https?|ftp|file))[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]", RegexOptions.IgnoreCase); var mc = reg.Match(body);
if (mc.Success)
{
link = mc.Groups[].ToString();
}
}
}
return Ok(new { success = true, data = link });
}
catch (Exception ex)
{
return Ok(new { success = false, data = ex.Message });
}
}

看上面代码,核心的方法就是  ImapClient,具体用法大家要看一下官方文档,这里提供一些解决思路并简单结合栗子说明一下用法

ImapClient参数可以看到,第一个是host名称,第二个是端口号,

这里不懂的人提供一个获取这些信息的方法,下载一个foxmail客户端,登录邮箱,查看系统设置中服务器就可以看到上面的信息,具体为什么这些东西有什么用,查看imap协议,本人不求甚解并不了解这些东西具体原因,

再回到参数介绍上面来,后面的参数都是固定的,邮箱名称,密码,最后面两固定的这么写就可以。

 IEnumerable<uint> uids = client.Search(SearchCondition.All(), "junk"); 获取邮件uid

方法参数,第一个参数就是设定获取邮件那一部分,我这里直接写的ALL,后面一个参数就是指定获取那个文件的邮件,比如收信箱,发信箱,垃圾箱,草稿等待,我这里获取的垃圾箱(junk),说明一下,各种邮箱有些文件对应的字符串是不一样的,比如hotmail的垃圾箱是junk,gamil的是spam,这里是个坑,我也是摸石头过河试出来的,所以特别说明一下。

 client.GetMessage(uids.Single(), true, "junk");
根据uid获取邮件内容, 差不多就这几行代码就可以了,在实现需求以后回头想想如果最早用爬虫来实现效果的话,估计代码量复杂度要翻好几倍。归根结底,技术终究只是给需求提供最佳解决办法的工具嘛,这篇文章是给大家一个思路参考和问题解决方案,如果你有自动获取邮件这么个需求的话,希望你一定要搜到这篇文章,

C#程序模拟登录批量获取各种邮件内容信息的更多相关文章

  1. Python手动构造Cookie模拟登录后获取网站页面内容

    最近有个好友让我帮忙爬取个小说,这个小说是前三十章直接可读,后面章节需要充值VIP可见.所以就需要利用VIP账户登录后,构造Cookie,再用Python的获取每章节的url,得到内容后再使用 PyQ ...

  2. PHP模拟登录并获取数据

    cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信 ...

  3. PHP中使用CURL模拟登录并获取数据实例

    cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信 ...

  4. Python结合NC.exe 实现模拟登录&批量填表

    1.工作需求 有很多事项,每个事项分为:名称.种类.时间等,需要把每个事项逐个输入到网页中并提交. 如果用人肉操作的话,流程就是先登录到网站后台,点击“添加”——>输入各项内容——>点击“ ...

  5. 用python实现批量获取Linux主机简要信息并保存到Excel中 unstable 1.1

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- #filename get_linux_info.py #获取Linux主机的信息 # titles=[' ...

  6. 微信小程序调用微信登陆获取openid及用户信息 java做为服务端

    转载的文章,很不错 https://blog.csdn.net/weilai_zhilu/article/details/77932630

  7. Python爬虫之模拟登录微信wechat

    不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一起.既然它这么重要,如果我们可以利用爬虫模拟登录,是不是就意味着我们可以获取这些信息 ...

  8. 使用selenium模拟登录知乎

    网上流传着许多抓取知乎数据的代码,抓取它的数据有一个问题一定绕不过去,那就是模拟登录,今天我们就来聊聊知乎的模拟登录. 获取知乎内容的方法有两种,一种是使用request,想办法携带cookies等必 ...

  9. C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站

    原文:C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站 我们经常会碰到需要程序模拟登录一个网站,那如果网站需要填写验证码的要怎样模拟登录呢?这篇文章 ...

随机推荐

  1. 最好用linux版QQ

    这个版本的qq是见过linux下做好用的qq,希望对大家有用; 安装简单,qq易用,不卡死,可以接收文件. 安装过程如下: git clone https://gitee.com/wszqkzqk/d ...

  2. 小知识 Sql 格式化工具 AutoPostBack后的定位 Post和Get区别 防止被 Fream

    T-Sql 格式化工具 http://jinzb.name/Common/SqlFormat.html AutoPostBack后的定位问题: 给Page 增加属性,MaintainScrollPos ...

  3. 管理.MD

    ```` 对于水平低点的我一般是:讲解任务 -> 他复述任务 ->提出解决思路 -> 他复述思路 -> 认他思考一段时间,他提出他的意见和想法 -> 我再确定 -> ...

  4. 【lucene】一个简单的招聘网站的建立

    1.建立索引库: 核心代码如下 package com.tabchanj.job.index; import java.util.ArrayList; import java.util.HashMap ...

  5. react + antd Form表单校验

    非空限制 {getFieldDecorator('name', { rules: [{ required: true, message: '名称不能为空', }],})( <Input plac ...

  6. spring cloud 入门

    某种程度上 软硬件 殊途同归了 (软件模仿硬件 总线设计, 资源定位 (寻址) ) spring 是什么 EDA ( Event-driven architecture ) (SOA , SOAP , ...

  7. Docker搭建Gitlab服务器

    1.使用docker搜索gitlab镜像 docker search gitlab 2.下载镜像: docker pull docker.io/gitlab/gitlab-ce 3.查看docker镜 ...

  8. symfony3 使用命令行工具生成Entity实体所踩的坑

    1.把配置文件汇总连接邮箱的配置信息注释掉了,在创建Entity时php bin/console doctrine:generate:entity报错 2. 错误原因是实体文件映射到数据库中的字段时候 ...

  9. PIL:处理图像的好模块

    介绍 PIL是一个专门用来处理图像的模块,可以对图象进行各种各样的变换 打开一张图片 from PIL import Image # 调用Image下的open方法,即可打开一张图片 # 得到的im便 ...

  10. ERA-interim

    数据介绍整理中... https://software.ecmwf.int/wiki/display/UER/Time-integrated+surface+solar+radiation+downw ...