C#程序模拟登录批量获取各种邮件内容信息
一般来说,如果现实中你有这样一种需求“假如你是褥羊毛的羊毛党,你某日发现了一个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#程序模拟登录批量获取各种邮件内容信息的更多相关文章
- Python手动构造Cookie模拟登录后获取网站页面内容
最近有个好友让我帮忙爬取个小说,这个小说是前三十章直接可读,后面章节需要充值VIP可见.所以就需要利用VIP账户登录后,构造Cookie,再用Python的获取每章节的url,得到内容后再使用 PyQ ...
- PHP模拟登录并获取数据
cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信 ...
- PHP中使用CURL模拟登录并获取数据实例
cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信 ...
- Python结合NC.exe 实现模拟登录&批量填表
1.工作需求 有很多事项,每个事项分为:名称.种类.时间等,需要把每个事项逐个输入到网页中并提交. 如果用人肉操作的话,流程就是先登录到网站后台,点击“添加”——>输入各项内容——>点击“ ...
- 用python实现批量获取Linux主机简要信息并保存到Excel中 unstable 1.1
#!/usr/bin/env python3 # -*- coding: utf-8 -*- #filename get_linux_info.py #获取Linux主机的信息 # titles=[' ...
- 微信小程序调用微信登陆获取openid及用户信息 java做为服务端
转载的文章,很不错 https://blog.csdn.net/weilai_zhilu/article/details/77932630
- Python爬虫之模拟登录微信wechat
不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一起.既然它这么重要,如果我们可以利用爬虫模拟登录,是不是就意味着我们可以获取这些信息 ...
- 使用selenium模拟登录知乎
网上流传着许多抓取知乎数据的代码,抓取它的数据有一个问题一定绕不过去,那就是模拟登录,今天我们就来聊聊知乎的模拟登录. 获取知乎内容的方法有两种,一种是使用request,想办法携带cookies等必 ...
- C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站
原文:C# 利用 HttpWebRequest 和 HttpWebResponse 模拟登录有验证码的网站 我们经常会碰到需要程序模拟登录一个网站,那如果网站需要填写验证码的要怎样模拟登录呢?这篇文章 ...
随机推荐
- py2 json字符串转字典去掉前缀u
def unicode_convert(input): if isinstance(input, dict): return {unicode_convert(key): unicode_conver ...
- Linux-1.5日志查看常用命令
常访问的日志目录:\data\log\(message系统 | secure安全 | maillog邮件) 进入日志目录 find \d1\data\log -name '*log' 在目录下查找以l ...
- 常用的TCP/UDP端口
已知的TCP/UDP端口可以在wikipedia上找到: List of TCP and UDP port numbers, 太多了,按组列举了最常用的,如下: FTP:21SSH:22Telnet: ...
- performance面板使用,以及解决动画卡顿
https://googlechrome.github.io/devtools-samples/jank// 官方案例 https://juejin.im/post/5b65105f518825 ...
- MySQL--高性能MySQL笔记一
链接管理与安全性: 每个客户端连接都在服务器进程中拥有一个线程. MySQL5.5以及更新的版本提供了一个API,支持线程池插件,可以使用池中少量的线程服务大量的链接. 认证基于用户名.密码和原始主机 ...
- Spring 资源加载
pom.xml ``` org.springframework spring-core 4.3.14.RELEASE org.springframework spring-beans 4.3.16.R ...
- python之itertools
Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. count 创建一个迭代器,生成从n开始的连续整数,如果忽略n,则从0开始计算(注意:此迭代器不支持长整数) 如果超出 ...
- 网络初级篇之OSPF(一)原理
一.OSPF是什么 Open Shortest Path First, 开放最短路径优先协议,是一种开源的使用最短路径优先(SPF)算法的内部网关协议(IGP).常用于路由器的动态选路. 二.OSPF ...
- 牛客练习赛47 E DongDong数颜色 (树状数组维护区间元素种类数)
链接:https://ac.nowcoder.com/acm/contest/904/E 来源:牛客网 DongDong数颜色 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 5242 ...
- Mysql 查看连接数,状态及最大并发数(转载)
-- show variables like '%max_connections%'; 查看最大连接数 set global max_connections=1000 重新设置 mysql> ...