Outlook 邮件助手

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

 

posted @ 2017-09-05 13:24  真栋哥  阅读(520)  评论(0编辑  收藏  举报