Outlook 邮件助手


1 Overview

2 C# 编程

3 Outlook 设置

3.1 Outlook 2013

3.2 Outlook 2010


1 Overview

本章将示例如何开发一个邮件助手,对新收到的邮件进行自定义操作。例如:

  • 对于垃圾邮件,直接删除
  • 对于不重要邮件,自动标为已读
  • 对于重要邮件,弹出提醒

2 C# 编程

需要解决如下几个问题

  1. 如何连接到 Outlook
  2. 如何获得新收到的邮件
  3. 如何读取邮件的信息,例如标题,发送者,邮件正文等
  4. 如何对邮件进行操作,例如删除,标为已读等

下面的代码演示了对上述问题的解决方案

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 邮件助手的更多相关文章

  1. 如何浏览并管理 Outlook 邮件?

    当你的邮件多起来的时候你就不得不考虑这个问题了,如何处理各种邮件? 如何浏览并管理 Outlook 邮件? 待续~

  2. 如何查看Outlook邮件的源码(包括ip)

    如何查看Outlook邮件的源码(包括ip) 一.总结 1.右键点击邮件可出现 view message details. 二.如何查看Outlook邮件的源码(包括ip) 1.点收件箱 2.鼠标右键 ...

  3. 个人永久性免费-Excel催化剂功能第84波-批量提取OUTLOOK邮件附件

    批量操作的事情常常能让人感到十分畅快,区别于一次次的手工的操作,它真正实现了“人工智能”想要的效果,人指挥机器做事情,机器就可以按着人意去操作.此篇给大家再次送了批量操作一绝活,批量下载OUTLOOK ...

  4. C#结合LumiSoft.Net.dll读取Outlook邮件(.eml格式邮件)

    如果直接从Outlook(或者微软的其它邮件客户端如:Outlook Express.Windows Live Mail)的邮件文件(.eml格式)中提取各种电子邮件内容,使用LumiSoft.Net ...

  5. 读取本地outlook邮件内容

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. outlook邮件中样式问题

    目前要做一个定时发送邮件的功能,邮件的大致内容布局如下: HTML中 在QQ邮件中,可以进行正常显示. 在outlook网页版,也可以正常显示, outlook客户端 但是到了客户端就会出现很多很神奇 ...

  7. smtp outlook邮件发送非授权码模式

    1.起因:send fail SMTP AUTH extension not supported by server. 使用端口25 和587均失效出现此问题 首先前往outlook修改设置pop和I ...

  8. UiPath工具取得网页上面的数据,写入到csv,Outlook邮件发送

    问题描述: 想取得网页上面的股票价格,之后写入到csv文本里面之后添加附件发送邮件. 解决方法: 利用UIPath工具来取得数据,之后写入再发送. 具体步骤: 1.打开网页,之后找到所显示的股票行情的 ...

  9. C#发送Outlook邮件(仅SMTP版本)

    先表明Outlook的参数:网址:https://support.office.com/zh-cn/article/Outlook-com-%E7%9A%84-POP%E3%80%81IMAP-%E5 ...

随机推荐

  1. npm安装插件怎么判断是--save 还是--save--dev

    npm敲到一半的时候发现:诶 这个到底是-g呢还是--save还是--save-dev呢 1.首先要先了解package.json 在Node.js中,模块是一个库或框架,也是一个Node.js项目. ...

  2. JavaScript的filter方法

    var ages = [32, 33, 16, 40]; function checkAdult(age) { return age >= 18; } function myFunction() ...

  3. linux 实时监控网速脚本(转)

    #!/bin/bash ethn=$ while true do RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{pri ...

  4. Python 下载依赖包环境经常失败超时解决方法

    人生苦短,我用python!为什么很多人喜欢用python,因为包多呀,各种调包.但是调包有的时候也调的闹心,因为安装包不是失败就是很慢,很影响自己的工作进度,这里给出一个pip快速安装工具包的办法, ...

  5. mysql数据库架构设计与优化

    mysql数据库架构设计与优化 2019-04-23 20:51:20 无畏D尘埃 阅读数 179  收藏 更多 分类专栏: MySQL   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA ...

  6. Cisco ASA 5505配置详解(v8.3之前版本)

    在配ASA 5505时用到的命令 2009-11-22 22:49 nat-control命令 在6.3的时候只要是穿越防火墙都需要创建转换项,比如:nat:static等等,没有转换项是不能穿越防火 ...

  7. ThinkPHP5远程代码执行高危漏洞(附:升级修复解决方法)

    漏洞描述 由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接GetWebShell. 漏洞评级 严重 影响版本 ThinkPHP 5 ...

  8. phpspreadsheet 中文文档(三) 计算引擎

    2019年10月11日13:59:52 使用PhpSpreadsheet计算引擎 执行公式计算 由于PhpSpreadsheet表示内存中的电子表格,因此它还提供公式计算功能.单元格可以是值类型(包含 ...

  9. sublime 光标由竖线变下横线

    编程时偶尔会突然出现光标突然间由“小竖线”变成“黑块矩形”,网上有说在控制面板中进行设置.由于光标是在使用中突然发生变化,推测是碰到了快捷键,因此断定有快捷键可以修改.后来,无意中碰到了“Insert ...

  10. python 中的eval与exec

    eval类似exec,是使用python编译器运行表达式和语句两者区别在于:eval是编译表达式并返回值(如: eval("'hello'*2") 结果是 hellohello)e ...