Outlook 邮件助手
Outlook 邮件助手
1 Overview
2 C# 编程
3 Outlook 设置
3.1 Outlook 2013
3.2 Outlook 2010
1 Overview
本章将示例如何开发一个邮件助手,对新收到的邮件进行自定义操作。例如:
- 对于垃圾邮件,直接删除
- 对于不重要邮件,自动标为已读
- 对于重要邮件,弹出提醒
2 C# 编程
需要解决如下几个问题
- 如何连接到 Outlook
- 如何获得新收到的邮件
- 如何读取邮件的信息,例如标题,发送者,邮件正文等
- 如何对邮件进行操作,例如删除,标为已读等
下面的代码演示了对上述问题的解决方案
using System;
using Outlook = Microsoft.Office.Interop.Outlook; namespace Test
{
class Program
{
static void Main(string[] args)
{
Outlook.Application outlook = GetOutlookInstance(); if (outlook != null)
{
System.Console.WriteLine("Get outlook successfully.");
}
else
{
System.Console.Error.WriteLine("Cannot get outlook!");
return;
} AddMonitor(outlook); System.Console.Read();
} //连接到 Outlook
private static Outlook.Application GetOutlookInstance()
{
Outlook.Application outlook = (Outlook.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Outlook.Application");
return outlook;
} //添加对新到邮件的监控
private static void AddMonitor(Outlook.Application outlook)
{
Outlook.NameSpace mapiNamespace = outlook.GetNamespace("MAPI");
Outlook.MAPIFolder inbox = mapiNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
inbox.Items.ItemAdd += Items_ItemAdd;
} //读取邮件内容并进行相应处理
private static void Items_ItemAdd(object Item)
{
Outlook.MailItem mail = Item as Outlook.MailItem; if (mail == null)
{
return;
} Console.WriteLine(string.Format("Received Email at {0}\r\nSubject: {1}\nSender: {2}\nContent: \n {3}", mail.ReceivedTime, mail.Subject, mail.Sender.Name, mail.Body)); if (mail.Subject == "test")
{
mail.Delete();
}
else if (mail.Subject == "test1")
{
mail.UnRead = false;
}
}
}
}
3 Outlook 设置
外部程序试图读取 Outlook 内容时,Outlook 会弹出如下警示框:

可对注册表进行修改阻止弹出该警示框
感谢网上的大神找到的办法How to stop the Outlook “A program is trying to access” pop-up messages
3.1 Outlook 2013
找到键 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Outlook\Security,如果没有则创建,并添加如下 DWORD 值
- CheckAdminSettings: 1
- AdminSecurityMode: 3
- PromptSimpleMAPISend : 2
- PromptSimpleMAPINameResolve : 2
- PromptSimpleMAPIOpenMessage : 2
- PromptOOMCustomAction : 2
- PromptOOMSend : 2
- PromptOOMAddressBookAccess : 2
- PromptOOMAddressInformationAccess : 2
- PromptOOMMeetingTaskRequestResponse : 2
再找到键 HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\15.0\outlook\security,如果没有则创建,并添加如下 DWORD 值
- CheckAdminSettings: 1
- AdminSecurityMode: 3
- PromptSimpleMAPISend: 2
- PromptSimpleMAPINameResolve: 2
- PromptSimpleMAPIOpenMessage: 2
- PromptOOMCustomAction: 2
- PromptOOMSend: 2
- PromptOOMAddressBookAccess: 2
- PromptOOMAddressInformationAccess: 2
- PromptOOMMeetingTaskRequestResponse: 2
3.2 Outlook 2010
操作步骤与 Outlook 2013 相同,只是将 15.0 换为 14.0
Outlook 邮件助手的更多相关文章
- 如何浏览并管理 Outlook 邮件?
当你的邮件多起来的时候你就不得不考虑这个问题了,如何处理各种邮件? 如何浏览并管理 Outlook 邮件? 待续~
- 如何查看Outlook邮件的源码(包括ip)
如何查看Outlook邮件的源码(包括ip) 一.总结 1.右键点击邮件可出现 view message details. 二.如何查看Outlook邮件的源码(包括ip) 1.点收件箱 2.鼠标右键 ...
- 个人永久性免费-Excel催化剂功能第84波-批量提取OUTLOOK邮件附件
批量操作的事情常常能让人感到十分畅快,区别于一次次的手工的操作,它真正实现了“人工智能”想要的效果,人指挥机器做事情,机器就可以按着人意去操作.此篇给大家再次送了批量操作一绝活,批量下载OUTLOOK ...
- C#结合LumiSoft.Net.dll读取Outlook邮件(.eml格式邮件)
如果直接从Outlook(或者微软的其它邮件客户端如:Outlook Express.Windows Live Mail)的邮件文件(.eml格式)中提取各种电子邮件内容,使用LumiSoft.Net ...
- 读取本地outlook邮件内容
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- outlook邮件中样式问题
目前要做一个定时发送邮件的功能,邮件的大致内容布局如下: HTML中 在QQ邮件中,可以进行正常显示. 在outlook网页版,也可以正常显示, outlook客户端 但是到了客户端就会出现很多很神奇 ...
- smtp outlook邮件发送非授权码模式
1.起因:send fail SMTP AUTH extension not supported by server. 使用端口25 和587均失效出现此问题 首先前往outlook修改设置pop和I ...
- UiPath工具取得网页上面的数据,写入到csv,Outlook邮件发送
问题描述: 想取得网页上面的股票价格,之后写入到csv文本里面之后添加附件发送邮件. 解决方法: 利用UIPath工具来取得数据,之后写入再发送. 具体步骤: 1.打开网页,之后找到所显示的股票行情的 ...
- C#发送Outlook邮件(仅SMTP版本)
先表明Outlook的参数:网址:https://support.office.com/zh-cn/article/Outlook-com-%E7%9A%84-POP%E3%80%81IMAP-%E5 ...
随机推荐
- Fluent Meshing生成空心球体网格(空心部分不生成网格)
原视频下载地址: https://pan.baidu.com/s/1OJdHuIJd7pAr7cHgVCD_0g 密码: puiq
- 制作镜像文件工具packer
openstack镜像制作要在openstack上创建虚拟机,必然要使用到虚拟机镜像. 对于普通用户,可以使用已经创建好的虚拟机镜像.一般是操作系统官方构建并提供的. 某些用户可以有自己独特的需求,需 ...
- Eclipse离线安装svn插件
Eclipse离线安装svn插件 1,下载插件 百度网盘:链接: https://pan.baidu.com/s/1lP7J2_7bdj1Tp4YdnrdllQ 提取码: v3nq 2,在eclips ...
- Qt 组合框QComboBox的定制
转载:https://www.cnblogs.com/csuftzzk/p/qss_combobox.html 转载:https://www.bbsmax.com/A/E35pLgRK5v/ 转载:h ...
- nodejs相关框架
sails https://sailsjs.com/documentation/concepts koa koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 ...
- django文章对本项目有用的收集
1.在django中使用自定义标签实现分页功能 https://www.cnblogs.com/MnCu8261/p/5943609.html https://www.cnblogs.com/bail ...
- JMeter压测上对于并发的认识误区
1.误区 在JMeter压测过程中,我们通常认为1s内100的并发量(即:QPS为100)的设置如下: 此时,没有再添加额外的控制器.上述中的参数设置解释:Number of Threads(user ...
- 接口项目servlet的一种处理方式,将异常返回给调用者【我】
接口项目servlet的一种处理方式,其他层有异常全部网上抛,抛到servlet层,将异常返回给调用者: Servlet层: private void processRequest(HttpServl ...
- PMP 第5章错题总结
1.工作分解结构是项目团队与相关方之间沟通的有效工具之一2.控制账户是工作分解结构某个层次上的要素,以便与工作包一一对应3.项目范围说明书包括产品范围.产品验收标准.项目可交付成果.项目除外责任,以及 ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器web前端:vue组件之间的传值,父组件向子组件传值
前端方面,EasyDSS流媒体服务器与EasyNVR有着根本的不同.EasyNVR使用的是传统的js来进行开发,而EasyDSS使用的是webpack+vue来进行开发的,了解vue+webpack的 ...