Outlook 开发2
2014-02-28 10:59
435 查看
转自:http://www.cnblogs.com/madebychina/archive/2011/09/20/madebychina_2.html
C#使用如下代码调用Outlook2003发送邮件:
但是因为Outlook2003的安全机制,总是会弹出安全提示对话框,如下:
而且在我们选择允许访问,点击“是”按钮后还会弹出另外一个对话框,如下:
并且“是”按钮还会被冻结5秒钟。分析原因是我们使用的是Outlook.MailItem邮件模式,这是一种非安全的模式,所以在第三方程序调用Outlook2003时会弹出确认对话框,如何来避免弹出安全提示对话框呢?我们可以使用SafeMailItem模式。但是在使用这种模式时需要引用Redemption.dll,而且还要安装Redemption插件,代码如下:
这样就能避免弹出对话框了,其他高版本的Outlook好像没有此问题,Outlook2007在开启反病毒软件时不会弹出对话框。
Redemption下载地址:http://www.dimastr.com/redemption/download.htm
本文参考资料地址:http://www.outlookcode.com/article.aspx?id=52
http://www.dotnet247.com/247reference/message.aspx?id=92601
C#使用如下代码调用Outlook2003发送邮件:
// Create the Outlook application. Outlook.Application oApp = new Outlook.Application(); //Outlook.ApplicationClass oApp = new Outlook.ApplicationClass(); // Get the NameSpace and Logon information. Outlook.NameSpace oNS = oApp.GetNamespace("mapi"); // Log on by using a dialog box to choose the profile. oNS.Logon(Missing.Value, Missing.Value, true, true); // Alternate logon method that uses a specific profile. // TODO: If you use this logon method, // change the profile name to an appropriate value. //oNS.Logon("YourValidProfile", Missing.Value, false, true); // Create a new mail item. Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem); // Set the subject. oMsg.Subject = "mail"; //oMsg.Attachments.Add("C:\\mailLog.txt", Outlook.OlItemType.olMailItem, 1, "report"); // Set HTMLBody. String sHtml; sHtml = "<HTML>\n" + "<HEAD>\n" + "<TITLE>Sample GIF</TITLE>\n" + "</HEAD>\n" + "<BODY><P>\n" + "<h1><Font Color=Green>Inline graphics</Font></h1></P>\n" + "</BODY>\n" + "</HTML>"; oMsg.HTMLBody = sHtml; // Add a recipient. Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients; // TODO: Change the recipient in the next line if necessary. string reciMailAdress=this.txtMail.Text; Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add(reciMailAdress); oRecip.Resolve(); // Send. oMsg.Send(); //((Microsoft.Office.Interop.Outlook._MailItem)oMsg).Send(); // Log off. oNS.Logoff(); // Clean up. oRecip = null; oRecips = null; oMsg = null; oNS = null; oApp = null;
但是因为Outlook2003的安全机制,总是会弹出安全提示对话框,如下:
而且在我们选择允许访问,点击“是”按钮后还会弹出另外一个对话框,如下:
并且“是”按钮还会被冻结5秒钟。分析原因是我们使用的是Outlook.MailItem邮件模式,这是一种非安全的模式,所以在第三方程序调用Outlook2003时会弹出确认对话框,如何来避免弹出安全提示对话框呢?我们可以使用SafeMailItem模式。但是在使用这种模式时需要引用Redemption.dll,而且还要安装Redemption插件,代码如下:
private void Send() { Outlook.Application olApp = new Outlook.ApplicationClass(); Outlook.NameSpace olNS = olApp.GetNamespace("MAPI"); olNS.Logon(Missing.Value, Missing.Value, false, false); SafeMailItem sItem = new Redemption.SafeMailItem(); Outlook.MailItem olItem = olApp.CreateItem(0) as Outlook.MailItem; String sHtml; sHtml = "<HTML>\n" + "<HEAD>\n" + "<TITLE>Sample GIF</TITLE>\n" + "</HEAD>\n" + "<BODY><P>\n" + "<h1><Font Color=Green>Inline graphics</Font></h1></P>\n" + "</BODY>\n" + "</HTML>"; olItem.HTMLBody = sHtml; sItem.Item = olItem; string reciMailAdress=txtMail.Text; sItem.Recipients.Add(reciMailAdress); sItem.Recipients.ResolveAll(); SetPropValue(sItem, "Subject", "Testing Redemption"); sItem.Send(); } private static object GetPropValue(object item, string propertyName) { try { object[] args = new Object[]{}; // dummy argument array Type type = item.GetType(); return type.InvokeMember( propertyName, BindingFlags.Public | BindingFlags.GetField | BindingFlags.GetProperty, null, item, args); } catch (SystemException ex) { // Console.WriteLine( // string.Format( // "GetPropValue for {0} Exception: {1} ", // propertyName, ex.Message)); } return null; } private static void SetPropValue(object item, string propertyName,object propertyValue) { try { object[] args = new Object[1]; args[0] = propertyValue; Type type = item.GetType(); type.InvokeMember(propertyName, BindingFlags.Public | BindingFlags.SetField | BindingFlags.SetProperty, null, item, args); } catch (SystemException ex) { // Console.WriteLine( // string.Format( // "SetPropValue for {0} Exception: {1} ", // propertyName, ex.Message)); } return; }
这样就能避免弹出对话框了,其他高版本的Outlook好像没有此问题,Outlook2007在开启反病毒软件时不会弹出对话框。
Redemption下载地址:http://www.dimastr.com/redemption/download.htm
本文参考资料地址:http://www.outlookcode.com/article.aspx?id=52
http://www.dotnet247.com/247reference/message.aspx?id=92601
相关文章推荐
- mouseover和mouseout事件在鼠标经过子元素时也会触发
- [费用流]BZOJ:3171: [Tjoi2013]循环格
- Lync server 2013 监控角色的安装
- 实现电话自动拨打、挂断
- 关于java里面Collection包括List,Map等初始化内部匿名类和泛型的一个例子
- 第一章 开始
- Linux 进程间通信 (IPC) // 消息队列
- mongodb管理工具 rockmongo使用时出现的问题
- linux和window文件传输利器rzsz
- 终端播放器moc配置解决乱码问题
- iOS高级进阶(3)Core Text入门
- 在WIN8.1 正式版上运行VC++6.0的方法
- 怎样将文件夹里的文件名保存到文本文档
- 一步一步写算法(之递归和堆栈)(转)
- Outlook 开发
- Linux 进程间通信 (IPC) //共享内存
- SCCM2012R2部署之二:先决条件
- JBoss Entity Bean Demo
- 开源软件七大盈利模式
- The Function Pointer Tutorials