收录日期:2019/04/20 17:10: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

无缘无故的php就报错!急救ing 为什么我安装了证书后,我的sql server无法启动了? tomcat 热部署怎么做啊?就是调试不用重启tomcat 关于连续滚动字幕?如何实现? 为什么我安装了证书后,我的sql server无法启动了? 致嵌入式开发者的一封信 javascript中的日期以yy/mm/dd这种形式显示。如何写? 致嵌入式开发者的一封信 JMail4.3高手请进!关于在ASP中发邮件的问题! 用adodata控件怎么修改conncectionstring的内容? 美女高分求答.....!!! 为什么我的session十几分钟就过期?而且有时长有时短? 怎样取消关闭按钮? 请问,如何将数据库表中存储的HTML代码嵌入到ASP页面中?先谢谢各位的帮助了! 求解sql语句 请问如何在asp.net的code-behind 文件中调用在aspx页面定义的script? BULK INSERT的问题 text数据库字段类型无法显示,原也? 钱都花在了delphi8.net问题上,现只有10元 拿了结婚证 如何取一组数值中某2位字符去其它字符比较? 高分!是否可以将tomcat的stdout log设置成按日期滚动?或者简单的,能否直接限制大小? 请问各位,版主哪有System.Data.AseClient,急啊,在线等 在单文档界面的程序中, 在视图中显示一个图片并把它放大两倍, 可是一拖滚动条的时候,就开始不断抖动请问怎样解决? 请SQL高手来一下,,不晓得有没有可能实现这种SQL语句. 小问题,不明白...... 拿了结婚证 ------------------------难题,如何在翻页时将表单内的参数传递到下一页?-------------------------------- static_cast这样使用为什么不行 请教:c#中怎么实现父子对话框?请高手看看.................