EWS:邮箱的一个开放的接口服务
https://3gstudent.github.io/3gstudent.github.io/Exchange-Web-Service(EWS)%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97/
EWS是邮箱的一个开放的接口服务,可以取到邮箱的各种信息,邮件收发、会议、日期安排
首先需要引入 Microsoft.Exchange.WebServices.dll 引用
class Program
{
/// <summary>
/// exchange服务对象
/// </summary>
//private static ExchangeService _exchangeService = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
static void Main(string[] args)
{
#region 需要依赖 Microsoft.Exchange.WebServices 读取未邮件箱
//ExchangeService版本为2007SP1
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
//参数是用户名,密码,域
service.Credentials = new WebCredentials("email.qq.com", "Zh.123456", "qq.com");
//给出Exchange Server的URL https://xxxxxxx
service.Url = new Uri("https://mail.xxxx.com/ews/exchange.asmx");
//你自己的邮件地址 xxx@xxx.xxx
service.AutodiscoverUrl("email.com", RedirectionCallback);
//创建过滤器, 条件为邮件未读.
SearchFilter sf = new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, true);
//查找Inbox,加入过滤器条件,结果10条
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, sf, new ItemView());
foreach (Item item in findResults.Items)
{
EmailMessage email = EmailMessage.Bind(service, item.Id);
if (!email.IsRead)
{
Console.WriteLine(email.Body);
//标记为已读
email.IsRead = true;
//将对邮件的改动提交到服务器
email.Update(ConflictResolutionMode.AlwaysOverwrite);
}
}
#endregion #region 不需要依赖 Microsoft.Exchange.WebServices 邮件发送
String user = "email@qq.com";
String password = "Zh.123456";
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => { return true; };
StreamReader sendData = new StreamReader("ews.xml", Encoding.Default);
byte[] sendDataByte = Encoding.UTF8.GetBytes(sendData.ReadToEnd());
sendData.Close();
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://mail.xxxxx.com/ews/exchange.asmx");
request.Method = "POST";
request.ContentType = "text/xml";
request.ContentLength = sendDataByte.Length;
request.AllowAutoRedirect = false;
request.Credentials = new NetworkCredential(user, password);
Stream requestStream = request.GetRequestStream();
requestStream.Write(sendDataByte, , sendDataByte.Length);
requestStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode != HttpStatusCode.OK)
{
throw new WebException(response.StatusDescription);
}
Stream receiveStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); String receiveString = readStream.ReadToEnd();
response.Close();
readStream.Close(); StreamWriter receiveData = new StreamWriter("out.xml");
receiveData.Write(receiveString);
receiveData.Close();
}
catch (WebException e)
{
Console.WriteLine("[!]{0}", e.Message);
Environment.Exit();
}
Console.WriteLine("[+]Done"); #endregion
}
static bool RedirectionCallback(string url)
{
// Return true if the URL is an HTTPS URL.
return true;
} public static void SendByExChange(string[] toemails, string[] Ctoemails, string title, string body, string[] fileName)
{
try
{
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };//至关重要的一句 否则会报错:The Autodiscover service couldn't be located.
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = new NetworkCredential("email@qq.com", "Zh.123456");
service.Url = new Uri(@"https://mail.xxxxx.com/ews/exchange.asmx");//exchange服务器上接口地址
service.TraceEnabled = false;
service.AutodiscoverUrl("email@qq.com");
EmailMessage message = new EmailMessage(service);
message.Subject = title;
message.Body = body;
if (fileName != null)
{
foreach (var str in fileName)
message.Attachments.AddFileAttachment(str);
}
if (Ctoemails != null)
{
foreach (var email in Ctoemails)
message.CcRecipients.Add(email);
}
if (toemails != null)
{
foreach (var email in toemails)
message.ToRecipients.Add(email);
} message.SendAndSaveCopy();
}
catch (Exception ex)
{
//Utility.LogHelper.WriteLog("发送邮件失败", ex);
}
}
}
EWS:邮箱的一个开放的接口服务的更多相关文章
- Spring Cloud 微服务开放平台接口
github源码地址:https://github.com/spring-cloud/spring-cloud-security 前言: 什么是开放平台接口 场景 : 总公司与子公司 对接接口 还有 ...
- 一个简单的用python 实现系统登录的http接口服务实例
用python 开发一个登录的http接口: 用户登录数据存在缓存redis里,登录时根据session判断用户是否已登录,session有效,则直接返回用户已登录,否则进mysql查询用户名及密码, ...
- SmartSql使用教程(1)——初探,建立一个简单的CURD接口服务
一.引言 最近SmartSql被正式引入到了NCC,借着这个契机写一个使用教程系列 二.SmartSql简介[摘自官方文档] 1. SmartSql是什么? SmartSql = MyBatis + ...
- 收集免费的接口服务,做一个api的搬运工
hello, 大家好,今天给大家推荐的开源项目在某种程度上极大的方便了广大的开发者,这个开源项目统计了网上诸多的免费API,为广大开发者收集免费的接口服务,专心致志做一个API的搬运工,每月定时更新新 ...
- "解密"微信开放高级接口 企业如何应对
今天(2013年10月29日)腾讯终于对外公开了微信公众平台最新的接口,一石激起千层浪,对于很多微信公众平台的运营人员来说,今天是令人兴奋的一天!微信在向申请服务号的企业开发了大量接口.用户不想输入文 ...
- 开放数据接口 API 简介与使用场景、调用方法
此文章对开放数据接口 API 进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用. 在给大家分享的一系列软件开发视频课程中,以及在我们的社区微信群聊天中,都积极地鼓励大家开 ...
- 开放API接口
[开放API]——知乎.博客园等开放API接口(更新ing) Cnodejs.org: https://cnodejs.org/api/ 和风天气: http://docs.heweather.c ...
- Api接口服务的设计和安全解决方案
这个涉及到两个方面问题:一个是接口访问认证问题,主要解决谁可以使用接口(用户登录验证.来路验证)一个是数据数据传输安全,主要解决接口数据被监听(HTTPS安全传输.敏感内容加密.数字签名) 普通网站应 ...
- 手把手教你用Abp vnext构建API接口服务
ABP是一个开源应用程序框架,该项目是ASP.NET Boilerplate Web应用程序框架的下一代,专注于基于ASP.NET Core的Web应用程序开发,也支持开发控制台应用程序. 官方网站: ...
随机推荐
- 配置全文搜索引擎solr
前言 solr是apache下的一个子项目,用java编写基于Lucene开发的全文搜索服务器,不同于Lucene,solr一个完成的搜索服务器,提供了众多接口调用,而Lucene只是个工具包.如果用 ...
- Nginx02(环境配置以及基本使用)
一:Nginx环境配置 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet ...
- Python从零开始——字符串String
一:Python字符串有哪些内容 二:Python字符串操作符 三:Python字符串格式化——占位符格式化 四:Python字符串格式化——format()函数 五:Python字符串常用操作函数
- INPUT输入子系统【转】
转自:https://www.cnblogs.com/deng-tao/p/6094049.html 1.Linux系统支持的输入设备繁多,例如键盘.鼠标.触摸屏.手柄或者是一些输入设备像体感输入等等 ...
- mysql数据库之管理表和索引
show engines; --->可以显示当前数据库 所支持的所有存储引擎 名称 是否支持 简要描述 ...
- C语言结构体(摘抄C语言设计)
struct Student stu_1;//定义struct Student 类型的变量stu_1 struct Student *p;//定义指向struct Student类型数据的指针变量 p ...
- 3-剑指Offer: 连续子数组的最大和
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...
- 深入理解defer(上)defer基础
深入理解 defer 分上下两篇文章,本文为上篇,主要介绍如下内容: 为什么需要 defer: defer 语法及语义: defer 使用要点: defer 语句中的函数到底是在 return 语句之 ...
- js闭包和原型链好文
http://www.cnblogs.com/wangfupeng1988/p/3977924.html
- 201871010102-常龙龙《面向对象程序设计(java)》第十周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...