Tag: outlook

从C#启动电子邮件应用程序(MAPI)(带附件)

在过去,我使用MAPISendMail从带有文件附件的C ++应用程序启动Outlook(或任何所需的MAPI电子邮件应用程序)。 (类似于Microsoft Word的发送电子邮件function)。 我需要在C#应用程序中执行相同的操作,并在XP,Vista,Server 2008(以及我认为的Windows 7)上运行时使其工作。 MAPISendMail在Vista / 2008下是不可取的,因为它在Outlook运行时始终返回MAPI_ E_FAILURE,并且托管代码中不支持MAPI。 即使在检查此修复程序后: http : //support.microsoft.com/kb/939718我无法让它可靠地工作。 我知道Microsoft Word和Adobe Reader 9都可以在Vista下使用附件启动Outlook。 AC#兼容的解决方案将是首选,但我会对任何有效的(不必使用MAPI)感到满意。 我似乎无法找到当前的“解决方案”。 Stack Overflow上现有的答案似乎也没有涵盖这一点。 编辑: 我知道MAPI和C#不能一起工作,因此我将采用在Vista和Server 2008中运行的C / C ++解决方案,而不是以管理员身份运行。 请参阅Adobe Reader 9和Microsoft Word作为有效的示例。

如何使Outlook Compose窗口最顶级?

我正在创建一个Outlook消息。 有时Outlook Compose窗口出现在其他窗口后面。 我怎样才能成为最顶级的? String address = “someone@example.com”; Outlook.Application oApp = new Outlook.Application(); Outlook._MailItem oMailItem = (Outlook._MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem); oMailItem.To = address; oMailItem.Subject = “Help”; oMailItem.BodyFormat = Outlook.OlBodyFormat.olFormatPlain; oMailItem.Attachments.Add(“H:\\file.txt”); oMailItem.Body = “Call me”; // body, bcc etc… oMailItem.Display(true); 我正在使用WinForm和.Net 2.0(目标)

以XMLfunction区以编程方式访问function区元素

这似乎有几次在这里被问到没有真正的答案: 在XMLfunction区中以编程方式访问function区控件 Officefunction区:如何在使用XML创建function区时访问控件 如果使用function区xml创建function区,据我所知,该xml中定义的组件没有编程风险。 改变这些组件状态的唯一明显有限的方法是使用像onAction,getContent,getImage事件这样的东西,并且IRibbonControl元素对于操纵有问题的元素提供的很少(更不用说,大多数这些函数只运行一次) ,首次渲染时)。 所以我试图找到一种以编程方式访问那些xmlfunction区元素的方法。

ItemSend事件未触发

我有一个Outlook 2007加载项(VSTO)。 使用Outlook发送的任何邮件都应在此之前进行修改。 我使用Application.ItemSend事件,如果我直接从Outlook( Inspector )或通过使用MailItem的Send方法的自定义C#应用程序发送电子邮件,它可以正常工作。 但是,有一些外部应用程序使用Outlook发送邮件 – 这根本不会触发ItemSend事件。 邮件直接移动到发件箱( 我甚至可以捕获该文件夹上的ItemAdd事件 ),然后发送。 另一个有趣的问题是,如果我定义了一个延迟传递规则 ,如果我使用Inspector或我的c#代码发送邮件,它就可以正常工作,但是当这个应用程序执行时它不会。 我的问题是何时以及如何创建传递ItemSend事件的消息?

从MS Outlook邮件中读取发件人的电子邮件地址

我使用下面的代码从MS Outlook 2010中读取传入的邮件 – public static void outLookApp_NewMailEx(string EntryIDCollection) { NameSpace _nameSpace; ApplicationClass _app; _app = new ApplicationClass(); _nameSpace = _app.GetNamespace(“MAPI”); object o = _nameSpace.GetItemFromID(EntryIDCollection); MailItem Item = (MailItem)o; string HTMLbpdyTest = Item.HTMLBody; string CreationTime = Convert.ToString(Item.CreationTime); string strEmailSenderEmailId = Convert.ToString(Item.SenderEmailAddress); string strEmailSenderName = Item.SenderName; string Subject = Item.Subject; } 如何获取发件人的邮件ID。 我尝试了Item.SenderEmailAddress但它没有给我发件人的电子邮件ID。 它给了我这样的东西 – /O=EXG5/OU=EXCHANGE […]

使用EWS和Exchange 2007通过对话实现Outlook 2010的组

我们正在使用EWS在我们的某些邮箱上生成一些分析。 部分原因是获得对话的计数/名称/开始/结束。 对话类似于Outlook 2010在按对话分组时显示的方式。 我希望能够使用ConversationId对项目进行分组,但这似乎只是Exchange 2010的一项function。 我可以按文件夹中的主题进行分组以获得线程的简单概念…但是这不会处理拆分对话,因为Outlook 2010会这样做 – 具体而言,它不会处理引入已发送项目中的回复(这些对我们来说很重要 – 如果不看回复,我们就无法获得好的指标。 我目前获取线程信息的代码如下所示: private IEnumerable GetThreads(Folder folder) { var view = new ItemView(int.MaxValue) {PropertySet = new PropertySet(BasePropertySet.IdOnly)}; // view.PropertySet.Add(ItemSchema.ConversationId); – Can’t use this as we’re stuck on Exchange 2007 !!! view.PropertySet.Add(ItemSchema.Subject); view.PropertySet.Add(ItemSchema.DateTimeReceived); var grouping = new Grouping(ItemSchema.Subject, SortDirection.Descending, ItemSchema.DateTimeReceived, AggregateType.Maximum); var groupResults = folder.FindItems(view, grouping); […]

部署/安装Outlook插件

我试图在客户端计算机上安装我的Outlook Addin。 不幸的是,加载项永远不会被“启用”它始终显示在“已禁用”加载项部分中。 是否有关于如何创建正确的安装应用程序并安装Outlook插件的简单分步指南? 编辑: 好的,所以我回到了基础,但我仍然无法正确安装它。 我使用VS2010项目向导创建一个新的Outlook Addin。 它生成文件等,然后我改变我的代码,如下所示: namespace OutlookAddIn1 { public partial class ThisAddIn { private void ThisAddIn_Startup(object sender, System.EventArgs e) { MessageBox.Show(“Worked”); } private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { } #region VSTO generated code /// /// Required method for Designer support – do not modify /// the contents of this method […]

使用C#读取Outlook邮件

我尝试连接到Outlook邮件时使用以下代码。 现在,我必须做错事,因为我试图获取收件箱邮件,我总是得到0邮件(当不是这种情况时)。 这是我的代码 Microsoft.Office.Interop.Outlook.NameSpace nameSpace = application.GetNamespace(“MAPI”); nameSpace.Logon(“”, “”, Missing.Value, Missing.Value); inboxFolder = nameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox); Console.WriteLine(“Folders: {0}”, inboxFolder.Folders.Count); 我的Outlook个人资料中有几个电子邮件帐户。 当我写下面的内容时 Console.WriteLine(“Accounts: {0}”,nameSpace.Accounts.Count); Console.WriteLine(“Name: {0}”, nameSpace.Accounts[1].DisplayName); 帐户总数正确显示,我真正想要访问的帐户的名称也是如此(索引1)。 现在,问题是我需要访问该帐户中的特定文件夹。 我该怎么做呢?

通过C#中的MailMessage取消Outlook会议请求

我正在使用C#中的ASP.NET MVC 1框架创建一个应用程序,我有用户注册事件。 注册后,我创建了一个Outlook会议请求 public string BuildMeetingRequest(DateTime start, DateTime end, string attendees, string organizer, string subject, string description, string UID, string location) { System.Text.StringBuilder sw = new System.Text.StringBuilder(); sw.AppendLine(“BEGIN:VCALENDAR”); sw.AppendLine(“VERSION:2.0”); sw.AppendLine(“METHOD:REQUEST”); sw.AppendLine(“BEGIN:VEVENT”); sw.AppendLine(attendees); sw.AppendLine(“CLASS:PUBLIC”); sw.AppendLine(string.Format(“CREATED:{0:yyyyMMddTHHmmssZ}”, DateTime.UtcNow)); sw.AppendLine(“DESCRIPTION:” + description); sw.AppendLine(string.Format(“DTEND:{0:yyyyMMddTHHmmssZ}”, end)); sw.AppendLine(string.Format(“DTSTAMP:{0:yyyyMMddTHHmmssZ}”, DateTime.UtcNow)); sw.AppendLine(string.Format(“DTSTART:{0:yyyyMMddTHHmmssZ}”, start)); sw.AppendLine(“ORGANIZER;CN=\”NAME\”:mailto:” + organizer); sw.AppendLine(“SEQUENCE:0”); sw.AppendLine(“UID:” + UID); sw.AppendLine(“LOCATION:” + location); […]

在Windows 7中获取/创建Outlook应用程序

我正在尝试获取当前运行的Outlook版本或启动Outlook以防万一它没有运行 ,但我在Windows 7中获取或创建Outlook应用程序对象时遇到一些问题。我认为它与在Vista和7中限制使用的用户权限。我正在使用Outlook 2010。 编辑:仅在我已启动Outlook 2010实例时才会显示这些错误。 如果Outlook未启动,则应用程序可以顺利运行(它可以自行启动Outlook实例)。 如果有人可以告诉我如何正确获取Outlook应用程序版本,那将非常有用。 我正在运行的代码是一个长的try-catch块,它继续触发exception: try { // create an application instance of Outlook oApp = new Microsoft.Office.Interop.Outlook.Application(); } catch(System.Exception ex) { try { // get Outlook in another way oApp = Marshal.GetActiveObject(“Outlook.Application”) as Microsoft.Office.Interop.Outlook.Application; } catch (System.Exception ex2) { // try some other way to get the object oApp = […]