How To Automate Outlook Using Visual C++/MFC

MFC outlook风格控件 立即下载

How To Automate Outlook Using Visual C++/MFC

Article ID:220600
Last Review:June 29, 2004
Revision:1.0
This article was previously published under Q220600

SUMMARY

You can programmatically control Microsoft Outlook using Microsoft Visual C++. This article demonstrates how to create contacts, create appointments, and send messages using Microsoft Outlook's object-model from Visual C++.

MORE INFORMATION

Follow the steps below to build and run the example:
1.Start Visual C++ and create a new MFC EXE dialog-based application.
2.Add a button to your dialog.
3.Double-click the button to add a handler for it, and add the following code:
   // Start Outlook.
   // If it is already running, you'll use the same instance...
   _Application olApp;
   COleException e;
   if(!olApp.CreateDispatch("Outlook.Application", &e)) {
      CString str;
      str.Format("CreateDispatch() failed w/error 0x%08lx", e.m_sc);
      AfxMessageBox(str, MB_SETFOREGROUND);
      return;
   }

   // Logon. Doesn't hurt if you are already running and logged on...
   NameSpace olNs(olApp.GetNamespace("MAPI"));
   COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
   olNs.Logon(covOptional, covOptional, covOptional, covOptional);

   // Create and open a new contact
   _ContactItem olItem(olApp.CreateItem(2));

   // Setup Contact information...
   olItem.SetFullName("James Smith");
   COleDateTime bdDate;
   bdDate.SetDate(1975, 9, 15);
   olItem.SetBirthday(bdDate);
   olItem.SetCompanyName("Microsoft");
   olItem.SetHomeTelephoneNumber("704-555-8888");
   olItem.SetEmail1Address("someone@microsoft.com");
   olItem.SetJobTitle("Developer");
   olItem.SetHomeAddress("111 Main St./nCharlotte, NC 28226");

   // Save Contact
   olItem.Save();

   // Create a new appointment
   _AppointmentItem olAppt(olApp.CreateItem(1));

   // Schedule it for two minutes from now...
   COleDateTime apptDate = COleDateTime::GetCurrentTime();
   olAppt.SetStart((DATE)apptDate + DATE(2.0/(24.0*60.0)));

   // Set other appointment info...
   olAppt.SetDuration(60);
   olAppt.SetSubject("Meeting to discuss plans...");

   olAppt.SetBody("Meeting with James to discuss plans.");
   olAppt.SetLocation("Home Office");
   olAppt.SetReminderMinutesBeforeStart(1);
   olAppt.SetReminderSet(TRUE);

   // Save Appointment
   olAppt.Save();

   // Prepare a new mail message
   _MailItem olMail(olApp.CreateItem(0));
   olMail.SetTo("someone@microsoft.com");
   olMail.SetSubject("About our meeting...");
   olMail.SetBody(
      "Hi James,/n/n"
      "/tI'll see you in two minutes for our meeting!/n/n"
      "Btw: I've added you to my contact list!");

   // Send the message!
   olMail.Send();

   AfxMessageBox("All done.", MB_SETFOREGROUND);
   olNs.Logoff();
						
4.Bring up the ClassWizard (Control-W) click the Automation Tab, and choose "From a type library" under the Add Class menu.
5.In the dialog box that comes up, navigate to the directory where Outlook is installed, and choose the Outlook type library (see table below). Select all the items it finds, and click OK to have ClassWizard generate MFC wrapper classes for all of them:
Outlook VersionType Library
97msoutl8.olb
98msoutl85.olb
2000msoutl9.olb
2002msoutl.olb
2003msoutl.olb

6.Add the following just before the implementation of your button handler:
   #include "msoutl85.h" // for Outlook 2000 use msoutl9.h
                         // for Outlook 2002 & Outlook 2003 use msoutl.h

   // Ole-initialization class.
   class OleInitClass {
   public:
      OleInitClass() {
         OleInitialize(NULL);
      }
      ~OleInitClass() {
         OleUninitialize();
      }
   };
   // This global class calls OleInitialize() at
   // application startup, and calls OleUninitialize()
   // at application exit...
   OleInitClass g_OleInitClass;
						
7.Compile and run the project. Once it has run, you should have a new contact named James Smith, an appointment scheduled in two minutes with a reminder to appear in one minute, and have sent a message to someone@microsoft.com. Also, because you added a birthday for your contact (9/15), a recurring event was added for your Outlook Calendar to remind you on that day.

Automating Microsoft Outlook 2000, 2002, and 2003

You can use the sample code previously described to automate Outlook 2000, 2002, and 2003 with one small change. The Outlook 97 Namespace class member has changed to _Namespace in Outlook 2000, 2002, and 2003. To use the code above for automating Outlook 2000, 2002, and 2003 change this line:
Namespace olNS(olApp.GetNames("MAPI"));
				
to:
_Namespace olNS(olApp.GetNames("MAPI"));
				
A new virus protection feature of Outlook 2002 and Outlook 2003 causes a dialog box to appear advising you that a program is using your address list and sending e-mail from your computer. It asks your approval to continue.

REFERENCES

For additional information about automation of Outlook, click the following article numbers to view the articles in the Microsoft Knowledge Base:
199870 (http://support.microsoft.com/kb/199870/) How To Send a Message by Outlook Object Model with VC++
196776 (http://support.microsoft.com/kb/196776/) Office Automation Using Visual C++
使用outlook接口自动发邮件 使用outlook的com接口发送邮件。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 立即下载

相关推荐

CMFCOutlookBar

很好用的CMFCOutlookBar例子,风格类似vs2008和outlook

Outlook-VBA-04-收件箱自动处理

系统:Windows 10 软件:Outlook 2016 本系列讲讲在Outlook中使用VBA实现一些功能 今天讲讲当收件箱收到一个新邮件的时候,会触发响应 Part 1:场景描述 我们希望对收件箱进行监控,每收到一个新邮件的时候,就触发一个动作 延伸一下,我们可以对特定邮件进行处理,如邮件主题还有特定关键字的,等等 收到一封新邮件 Part 2:代码 Private WithEvents Items As Outlook.Items Private Sub Application_Sta

Z的博客 2651

VC调用outlook发送邮件,文件复制移动压缩解压等

VC调用outlook实现自动发送邮件,实现文件的复制移动,文件夹的压缩和解压,使用MFC实现,多种压缩方法,有zlib压缩,有调用好压命令行进行压缩方法,需要什么样的可进行对注释的代码部分去掉注释即可。

Outlook安全钩子控件Security Manager for Microsoft Outlook介绍和下载

Outlook Security Manager (全称 - Security Manager for Microsoft Outlook) 是一个单线程的编程工具,可以让你实现旁路安全设置,以及避免安全警告或快速附件和应用程序,其结合了 Microsoft Outlook. Outlook Security Manager 用于 .NET, VCL 以及 ActiveX 平台上的开发(VB.NE

控件选型需谨慎 1177

牛哥推荐很好的CMFCOutlookBar例子

牛哥推荐很好的CMFCOutlookBar例子,风格类似vs2008和outlook

vc++ OutLookBar源码

OutLookBar源码 VC下测试完全通过

Outlook插件创建 C++

1、为 Outlook 2010 构建 C++ 加载项------ MSDN的解释还是很强悍的 2、附件生成 Outlook 加载项简介工程(vs2008)只做到的第六步,后面的没有继续,看下上面的链接大概能明白 ATL中的RGS文件介绍 将加载项的特定于 Outlook 的元数据插入到 Windows 注册表中,注册表脚本添加到文件Connect.rgs中; 此注册表项通知 Out...

Ma_Hong_Kai的博客 2078

STM32U575 ADC+DMA+UART数据采集实战:CubeMX配置避坑与代码实现

在嵌入式开发中,ADC采集与DMA传输是提升系统实时性的关键技术。通过DMA将ADC数据直接搬运到内存,可大幅降低CPU占用,实现高效连续采样。结合UART的DMA发送,能进一步解放CPU,适用于工业采集、信号监测等场景。本文以STM32U575为例,详解CubeMX中ADC、DMA、UART的配置要点,包括时钟树、DMAMUX映射、循环模式等,并给出代码实现与常见问题排查,帮助开发者快速构建稳定的数据采集链路。

weixin_29194255的博客 170

MFC 如何自动化 Outlook 使用 VisualC ++

可通过编程控制使用 MicrosoftVisualC++ MicrosoftOutlook。 本文演示如何创建联系人、 约会, 创建和发送邮件使用 Microsoft Outlook 从 VisualC++ 对象模型。 请按照下列步骤以生成并运行示例: 启动 VisualC++ 和创建新 MFC EXE 基于对话框的应用程序。

Siobhan的专栏 2719

分数计算器(C++课设)

需求概述 (1)设计一个分数计算器,进行分数的算术运算和逻辑运算。 (2)能够像使用基本数据的对象一样,对分数进行“+”、“-”、“*”和“/”等算术运算和比较两个分数的大小。 (3)以a/b的形式输入输出分数,允许输入输出整数这种特殊形式。 (4)对不是约化型的分数进行约化,避免分母为负数。 (5)如果分数的分母为0、除数为0或输入时格式有错,采用异常处理机制解决。 输入 以分数的形式输入。(如1/2) 若分母为0会抛出异常,重新输入。 菜单页面 RationalNumber.h(头文件) #ifnd

sadnessss的博客 8769

滤波器初步入门(非常全面)

主要关注的是-3dB这个点,-3dB就是截止频率所对应的点,我们把功率降至50%以下的信号定义为被衰减掉了(但要跟实际情况相结合,有些信号衰减-3db不够,需要衰减更多)-3dB这个点对应我们的电压来说是0.707。设计电路可以留一定的余量,如果你把4k设计为截止频率,那么4k时候衰减倍数为-3dB通常是不够的,你可以将截止频率设为2k,那么4k的衰减就可以达到15dB(假设),根据自己的需要去设计对应的截止频率。理想的滤波器是当输入的信号频率大于截止频率时,大于部分的频率对应的电压信号直接归0。

yybyybds的博客 5720

vc++ outlook编程。

以下内容在vc++6.0测试通过,但是在vs2008里的MFC里测试无法通过。转自微软:http://support.microsoft.com/?kbid=220600#appliesto 请遵循下面的步骤来生成和运行示例: 启动 Visual C++ 并新建一个基于 MFC EXE 对话框的应用程序。 向该对话框中添加一个按钮。 双击该按钮以为其添加处理程序并添加以

学无紫晶 6083

CMake、Make、MinGw、Clang、Llvm、GCC、MSVC的区别

除开 GCC (GNU 编译器集合) 以外,MinGW 还包含有一些其他的 GNU 程序开发工具;的缩写,MinGw是windows版本的gcc集合。并不仅是一个 C/C++ 编译器,而是一套。是微软开发的VC运行时库,3、Make和CMake是。

m0_37698164的博客 1万+

MFC中操作office软件(doc和excel)

程序来源:在执行该程序时出现:codefans.net\callmsoffice\office.h(10) : fatal error C1083: Cannot open type library file: 'C:\Program Files\Microsoft Office

千愚千寻 4029

银河麒麟V10 SP3离线安装Nginx1.21.5全记录(附11个rpm包下载清单)

本文详细记录了在银河麒麟V10 SP3操作系统上离线安装Nginx 1.21.5的全过程,包括11个必备rpm包的下载清单。通过分步骤的实战指南,帮助用户在国产化环境中高效部署Nginx服务,涵盖安装、配置、调优及故障排查等关键环节,特别适合金融、政务等对安全性要求高的场景。

weixin_30872337的博客 604

Python爬取天天基金网历史数据

前言 最近开始学习基金????,感觉需要收集一些数据统计分析才靠谱????毕竟给A股交学费的感觉可不好受???? 网上有很多公开的数据,我这里选择的是天天基金网进行爬取 页面分析 接口我分析过了,有些验证不太好获取数据,所以直接从html提取 在天天基金网中随便选择一款基金,然后点击进入历史数据页面 容易定位出日增长率的css选择器 还有翻页按钮 程序编写 使用selenium打开chrome浏览器进行爬取,全代码如下 from selenium import webdriver from sel

JiajunBernoulli的博客 2949

MFC/VC++操作Office必需的类型库参考

VC++/MFC操作Office必需的类型库参考说明:如果需要在VC++/MFC开发程序操作word/excel等office元素,那么需要对必要的类型库进行导入.下面是office系列的类型库参考,导入类型库时候请选择正确的类型库进行导入. 应用程序

生命因你而精彩!明天更美好! 4441

机器人视觉仿真软件:PCL (Point Cloud Library)_(8).点云分割技术

点云分割技术在机器人视觉处理中起着至关重要的作用,通过不同的分割方法可以有效地将点云数据中的不同物体或区域分离出来。PCL提供了丰富的分割算法,包括基于平面的分割、基于聚类的分割、基于模型的分割和基于条件的分割等。每种方法都有其适用的场景和优缺点,选择合适的方法可以显著提高点云处理的效率和准确性。希望本节的内容能够帮助读者更好地理解和应用点云分割技术。

kkchenjj的博客 822

C++ OutLook样式分割视图

1 新建SDI,取消文档视图结构 2 删除CChildView 3 必须通过向导创建MFC视图类继承CTreeView #pragma once #include <afxcview.h> // CLeftView 视图 class CLeftView : public CTreeView { DECLARE_DYNCREATE(CLeftView) protected: CLeftView(); // 动态创建所使用的受保护的构造函数 virtual ~

dxm809的博客 204

YOLOv11原创改进专栏|原创自研篇|DAA模块手把手添加教程

个人简介:大家好!我是 DAA 注意力机制,堪称深度学习中的“聚光灯”。我的任务是帮助模型聪明地识别关键特征,就像一位经验丰富的侦探,能够在繁杂的数据中找到重要线索。通过结合通道和空间的注意力,我能确保模型把重点放在最有价值的信息上,从而提升识别准确率。简单来说,我就是帮助你的模型变得更加专注、敏锐,让它在一堆数据中轻松找到“宝藏”,为检测精度加分!动态适应性特征提取DAA通过动态生成卷积核来适应输入特征的变化,从而实现针对不同数据的自适应特征提取。

mywhyyds的博客 379

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

MFC outLook

http://www.datalife.com/yitz/automation/auto_code.htmlhttp://topic.youkuaiyun.com/u/20071213/23/c093a344-8a1a-4182-8f85-f21466c40c8d.htmlhttp://support.microsoft.com/kb/220600

weixin_33777877的博客 224

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

c++,MFC实现拖放目标Drop(以拖放Outlook邮件和普通文件作为示例)

一.适用于拖放一般文件的WM_DROPFILES消息 WM_DROPFILES消息支持我们拖动文件资源管理器下面的文件夹和文件到自己的窗口,为此我们首先要在接受文件拖放窗口的初始化函数中添加如下代码,表示该窗口支持文件拖放: this->DragAcceptFiles(); 利用类向导或手动添加消息映射处理WM_DROPFILES消息,其中映射函数 _afx_msg void OnDrop...

weixin_40269730的博客 1834

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C++调用outlook发送电子邮件替代shellexecute

 公司有个即时通讯软件,以前调用shellexecute发送电子邮件,发现这个函数在有些机器经常失效,后上codeproject.com找了些资料,自己修改封装,测试效果不错,好东西大家共分享: #ifndef __SENDFILETO_H__#define __SENDFILETO_H__#include #include class CSendFileTo{public:   

Monkeycn的专栏 4812
上一篇: 几种不同的邮件发送解决方案
下一篇: 一个比较简单驱动程序[编译环境]
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值