收录日期:2019/06/26 10:42:45 时间:2016/05/31 10:45:55 标签:C#
现在正在做outlook2003的AddIn;
NameSpace outlookNS = applicationObject.GetNamespace("MAPI");
MAPIFolder inb = outlookNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
//获取指定索引邮件
MailItem mi = inb.Items[inb.Items.Count] as MailItem;
//遍历所有邮件
foreach(MailItem mi in inb.Items)
{
}
我只懂以上两种办法,
但如何得到收件箱中已定选定的邮件的信息(如索引、EntryID等)???

请各位高手指点,谢谢!!!
up
学习,C#做Addin南吗?
回复人: jamesfay(James Fay) ( ) 信誉:100  2004-11-29 16:32:00  得分: 0  
 
 
   学习,C#做Addin南吗?
  
 
现在学起来不算太难
up
学习
帮顶
up
up
看看MicroSoft的使用 C# 进行 Outlook 2003 编程的简介:
http://www.microsoft.com/china/msdn/library/langtool/vcsharp/USdv_vstechartol03csharp.mspx
我就是看着这篇文章来学习的,但是讲的不是很细,根本没有我的问题提及的东西。
帮你顶
private void button1_Click(object sender, System.EventArgs e)
{
foreach(Outlook.MailItem oItem in appOutLook.ActiveExplorer().Selection)
{


System.Windows.Forms.MessageBox.Show(oItem.Subject);
 
this.textBox1.Text=oItem.Body;
}                   

}
收件箱中已定选定的邮件的信息
foreach(Outlook.MailItem oItem in appOutLook.ActiveExplorer().Selection)
{

}

Connect.cs:

namespace MyAddin1
{
using System;
using Microsoft.Office.Core;
using Extensibility;
using System.Runtime.InteropServices;
using System.Reflection;


#region Read me for Add-in installation and setup information.
// When run, the Add-in wizard prepared the registry for the Add-in.
// At a later time, if the Add-in becomes unavailable for reasons such as:
//   1) You moved this project to a computer other than which is was originally created on.
//   2) You chose 'Yes' when presented with a message asking if you wish to remove the Add-in.
//   3) Registry corruption.
// you will need to re-register the Add-in by building the MyAddin21Setup project 
// by right clicking the project in the Solution Explorer, then choosing install.
#endregion

/// <summary>
///   The object for implementing an Add-in.
/// </summary>
/// <seealso class='IDTExtensibility2' />
[GuidAttribute("60D2321E-56B1-469F-9EDE-FEB0FB09214F"), ProgId("MyAddin1.Connect")]
public class Connect : Object, Extensibility.IDTExtensibility2
{

private object applicationObject;
private object addInInstance;
private CommandBarButton MyButton; 
private frmMail frmMail;
/// <summary>
/// Implements the constructor for the Add-in object.
/// Place your initialization code within this method.
/// </summary>
public Connect()
{
  }

/// <summary>
///      Implements the OnConnection method of the IDTExtensibility2 interface.
///      Receives notification that the Add-in is being loaded.
/// </summary>
/// <param term='application'>
///      Root object of the host application.
/// </param>
/// <param term='connectMode'>
///      Describes how the Add-in is being loaded.
/// </param>
/// <param term='addInInst'>
///      Object representing this Add-in.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
applicationObject = application;
addInInstance = addInInst;

if(connectMode != Extensibility.ext_ConnectMode.ext_cm_Startup)
{
OnStartupComplete(ref custom);
}

}

/// <summary>
///     Implements the OnDisconnection method of the IDTExtensibility2 interface.
///     Receives notification that the Add-in is being unloaded.
/// </summary>
/// <param term='disconnectMode'>
///      Describes how the Add-in is being unloaded.
/// </param>
/// <param term='custom'>
///      Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnDisconnection(Extensibility.ext_DisconnectMode disconnectMode, ref System.Array custom)
{
if(disconnectMode != Extensibility.ext_DisconnectMode.ext_dm_HostShutdown)
{
OnBeginShutdown(ref custom);
}
applicationObject = null;

}

/// <summary>
///      Implements the OnAddInsUpdate method of the IDTExtensibility2 interface.
///      Receives notification that the collection of Add-ins has changed.
/// </summary>
/// <param term='custom'>
///      Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnAddInsUpdate(ref System.Array custom)
{
}

/// <summary>
///      Implements the OnStartupComplete method of the IDTExtensibility2 interface.
///      Receives notification that the host application has completed loading.
/// </summary>
/// <param term='custom'>
///      Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnStartupComplete(ref System.Array custom)
{

CommandBars oCommandBars;
CommandBar oStandardBar;
try
{
oCommandBars = (CommandBars)applicationObject.GetType().InvokeMember("CommandBars", BindingFlags.GetProperty , null, applicationObject ,null);
}
catch(Exception)
{
// Outlook has the CommandBars collection on the Explorer object.
object oActiveExplorer;
oActiveExplorer= applicationObject.GetType().InvokeMember("ActiveExplorer",BindingFlags.GetProperty,null,applicationObject,null);
 
oCommandBars= (CommandBars)oActiveExplorer.GetType().InvokeMember("CommandBars",BindingFlags.GetProperty,null,oActiveExplorer,null);
}

// Set up a custom button on the "Standard" commandbar.
try
{
oStandardBar = oCommandBars["Standard"];        
}
catch(Exception)
{
// Access names its main toolbar Database.
oStandardBar = oCommandBars["Database"];      
}

// In case the button was not deleted, use the exiting one.
try
{
MyButton = (CommandBarButton)oStandardBar.Controls["My Custom Button"];
}
catch(Exception)
{
object omissing = System.Reflection.Missing.Value ;
MyButton = (CommandBarButton) oStandardBar.Controls.Add(1, omissing , omissing , omissing , omissing);
MyButton.Caption = "李洪根";
MyButton.Style = MsoButtonStyle.msoButtonCaption;
}

// The following items are optional, but recommended. 
//The Tag property lets you quickly find the control 
//and helps MSO keep track of it when more than
//one application window is visible. The property is required
//by some Office applications and should be provided.
MyButton.Tag = "My Custom Button";

// The OnAction property is optional but recommended. 
//It should be set to the ProgID of the add-in, so that if
//the add-in is not loaded when a user presses the button,
//MSO loads the add-in automatically and then raises
//the Click event for the add-in to handle. 
MyButton.OnAction = "!<MyCOMAddin.Connect>";

MyButton.Visible = true;
MyButton.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(this.MyButton_Click);
 

object oName = applicationObject.GetType().InvokeMember("Name",BindingFlags.GetProperty,null,applicationObject,null);

// Display a simple message to show which application you started in.
// System.Windows.Forms.MessageBox.Show("This Addin is loaded by " + oName.ToString()   , "MyCOMAddin");
oStandardBar = null;
oCommandBars = null;
}


/// <summary>
///      Implements the OnBeginShutdown method of the IDTExtensibility2 interface.
///      Receives notification that the host application is being unloaded.
/// </summary>
/// <param term='custom'>
///      Array of parameters that are host application specific.
/// </param>
/// <seealso class='IDTExtensibility2' />
public void OnBeginShutdown(ref System.Array custom)
{
object omissing = System.Reflection.Missing.Value ;
// System.Windows.Forms.MessageBox.Show("MyCOMAddin Add-in is unloading.");
MyButton.Delete(omissing);
MyButton = null;
frmMail.Dispose();
}

private void MyButton_Click(CommandBarButton cmdBarbutton,ref bool cancel) 
{
// System.Windows.Forms.MessageBox.Show("MyButton was Clicked","MyCOMAddin"); 

frmMail=new frmMail();
frmMail.appOutLook=(Outlook.Application)this.applicationObject;
frmMail.Show();
}
 

}
}
frmMain.cs

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using Microsoft.Office.Core;
using Extensibility;
using System.Runtime.InteropServices;
using Outlook;

namespace MyAddin1
{
/// <summary>
/// frmMail 的摘要说明。
/// </summary>
public class frmMail : System.Windows.Forms.Form
{

private Outlook.Application m_applicationObject;

private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TreeView treeView1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public frmMail()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.textBox1 = new System.Windows.Forms.TextBox();
this.treeView1 = new System.Windows.Forms.TreeView();
this.SuspendLayout();
// 
// button1
// 
this.button1.Location = new System.Drawing.Point(464, 344);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
// 
// textBox1
// 
this.textBox1.Location = new System.Drawing.Point(304, 104);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.textBox1.Size = new System.Drawing.Size(360, 160);
this.textBox1.TabIndex = 1;
this.textBox1.Text = "textBox1";
// 
// treeView1
// 
this.treeView1.ImageIndex = -1;
this.treeView1.Location = new System.Drawing.Point(8, 48);
this.treeView1.Name = "treeView1";
this.treeView1.SelectedImageIndex = -1;
this.treeView1.Size = new System.Drawing.Size(176, 328);
this.treeView1.TabIndex = 2;
// 
// frmMail
// 
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(672, 445);
this.Controls.Add(this.treeView1);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.button1);
this.Name = "frmMail";
this.Text = "EDoc文件上传";
this.ResumeLayout(false);

}
#endregion

private void button1_Click(object sender, System.EventArgs e)
{
// this.textBox1.Text=appOutLook.ActiveExplorer().HTMLDocument.ToString();
 
// System.Windows.Forms.MessageBox.Show(this,appOutLook.ActiveExplorer().CurrentFolder.Name);
//System.Windows.Forms.MessageBox.Show(this,appOutLook.ActiveExplorer().CurrentFolder.CurrentView.XML);
//System.Windows.Forms.MessageBox.Show(thisppOutLook.ActiveExplorer());
//  this,appOutLook.ActiveExplorer().Selection.GetType;
foreach(Outlook.MailItem oItem in appOutLook.ActiveExplorer().Selection)
{

// If(oItem.MessageClass == "IPM.Note")
// {}

System.Windows.Forms.MessageBox.Show(oItem.Subject);
 
this.textBox1.Text=oItem.Body;
}         

            

}

public Outlook.Application appOutLook
{
get
{
return m_applicationObject;
}
set
{
m_applicationObject=value;
}
}


}
}
http://blog.csdn.net/lihonggen0/archive/2004/09/04/94556.aspx
向楼上学习!!!!!!!!!!!!!!!!

向大家学习!!!!!!!!!!!!!!!!
mark

如何实现这个表? 曾经编写的一个程序不让我运行了! jmail在什么地方下载呢?请大家给一个下载的网址? 请教:Borland JBuilder有没有皮肤控件呢??? 请问jBuilder 2005怎么安装呀? MSSQLServer2000的日志文件的压缩问题(感动这么多朋友帮忙......) DLL问题 flexGrid 控制輸入長度問題 vc6 编译错误?( 解决问题马上结贴) Web Service能否查看调用者发送的是什么信息吗? 《80x86汇编语言程序设计教程-杨季文》保护模式例子的问题(就是$的问题) 偶然在中华视频网下载到了ffmpeg的最新版源代码,不敢独享,共享出来吧 :-) 提取磁盘序列号问题!急急!在线等!谢谢! 删除数据库记录后的更新问题! 调试dll时不能进入代码 如何删除只读目录,如何删除嵌套目录等 高手请进,看看这条SQL语句要怎么实现呢? 为什么我的水晶报表只能显示表头,显示不了数据啊?谢谢 加入域的计算机如何做GHOST备份? 高分请教!!关于web service 获取信息的问题! doc转换pdf,cs成功,bs失败。 触发器调用存储过程 求一关键字搜索的算法, 以下这断代码在w2000下执行正常,在XP下执行会无限等待,好象是停在WaitForSingleObject(piProcess.hProcess, INFINITE); 汇编语言程编程 请大家帮忙,参数类型不正确,或不在可以接受的范围之内,或与其他参数冲错误?? 高质量缩略图水印组件 AspNetImage 关于动态添加ACCESS数据库字段的字段属性问题 高分求关于Spread打印,高手请进! 求一关键字搜索的算法,