我Microsoft.Office.Interop.Outlook
在C#中使用来访问邮箱并查找具有特定文件附件的邮件.我需要与附件进行交互.
目前,我正在将文件保存到新位置并从那里访问它.这种复制过程让我感到沮丧.理想情况下,我希望从存储在内存中的任何位置访问该文件,但该Outlook.Attachment.PathName
字段返回null.
邮件存储在Exchange服务器上.
可以直接访问它们还是我需要继续保存文件?
我正在使用c#编写一个Outlook 2007加载项来存储SQL Server 2005数据库中的电子邮件.我希望能够将整个.msg文件存储在一个varbinary(MAX)
字段中.有没有办法这样做,而不必使用Outlook MailItem
的SaveAs()
方法保存到临时文件,然后重新读取文件?我需要将大量电子邮件传输到数据库,并希望避免代价高昂的磁盘读写操作.
我正在尝试使用Visual Studio 2010和WPF在C#中编写Outlook Addin,结果很难调试.我希望VS在启动时自动附加到OUTLOOK.EXE,这样我就可以轻松点击断点.所以,我进入了项目的属性>调试选项卡>启动操作,并将此设置从"启动项目"(当然这不起作用,因为它是一个DLL)更改为"启动外部程序".
这似乎有效; Outlook启动,显然附加了调试器.但是,没有遇到任何断点.我注意到当我进入"附加到进程"对话框时,它说Outlook只运行x86(我认为这是不正确的,因为我的manged代码在该地址空间中运行 - 对吗?),所以在Debug选项卡中我单击"设置"面板"启用非托管代码调试",现在我已经没有想法了.我也无法暂停这个过程,因为我收到一个错误,告诉我该进程没有运行我选择调试的代码类型.我知道我的Addin肯定是加载并执行的,因为我可以看到它正常工作.
作为一种解决方法,我一直在使用System.Diagnostics.Debugger.Launch(),这很烦人,但它的工作原理.有任何想法吗?
我正在使用ApplicationEvents_11_ItemSendEventHandler
(请参阅http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.applicationevents_11_itemsendeventhandler.aspx)在从Outlook发送项目时进行一些处理.
但是,由于此事件触发"发送"而不是"已发送",我无法获取某些信息,例如发件人,发送时间等.
项目实际发送后是否会触发另一个事件?我读过这篇博文; http://easyvsto.wordpress.com/2010/07/27/how-to-save-mail-content-when-a-mail-is-sent-from-outlook/但我对依赖出现的项目保持警惕在sent items文件夹中,考虑到用户可以禁用此功能.
编辑:我应该补充一点,我实际上已经尝试了"观察已发送的项目文件夹"的方法,并注意到该ItemAdd
事件似乎只发送我发送的第一封电子邮件,然后再重新启动Outlook.我的代码如下;
var sentMail = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
sentMail.Items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);
Run Code Online (Sandbox Code Playgroud)
我的方法......
void Items_ItemAdd(object item)
{
MessageBox.Show(((Outlook.MailItem)item).Subject);
}
Run Code Online (Sandbox Code Playgroud) 这是我第一次使用.NET为Outlook创建应用程序级外接程序.通过使用教程,我写下了一些代码并且它已成功构建,但我无法调试代码.调试警告框时显示:
您无法运行或调试此项目,因为未安装所需的Microsoft应用程序版本.
我正在使用Visual Studio 2010和MS Office 2007.为了调试代码,我该怎么办?我可以对代码进行任何更改,以便我可以对其进行调试.
这是代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
using Microsoft.Office.Interop.Outlook;
namespace OutlookAddIn1
{
public partial class ThisAddIn
{
Outlook.Inspectors inspectors;
event InspectorsEvents_NewInspectorEventHandler NewInspector;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
inspectors = this.Application.Inspectors;
inspectors.NewInspector +=
new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector);
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector)
{
Outlook.MailItem mailItem = Inspector.CurrentItem as Outlook.MailItem;
if (mailItem …
Run Code Online (Sandbox Code Playgroud) 我找不到任何文档来验证这个或任何工作示例
我想在下面实现类似xml的东西,但我认为这真的不可能.
<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2010/01/customui">
<ribbon>
<tabs>
<tab idMso="TabAddIns" label="Ribbon1">
</tab>
<tab idMso="TabAddIns" label="Ribbon2">
</tab>
</tabs>
</ribbon>
</customUI>
Run Code Online (Sandbox Code Playgroud) 我正在为outlook mac开发一个插件,我搜索了整个Google和社区,每个人都告诉我,它不可能为Outlook mac制作插件,因为它根本不支持我承认但我刚认识展望的WebEx插件,我想知道他们是如何设法的?如果有人有想法,我会非常感激
TL;博士
设置CustomProperties
为具有与会者的约会时,只有组织者的约会才能获得CustomProperties
.属性不会传播到其他与会者的约会.
更长的版本
当我们与多个与会者创建约会然后以每个与会者身份登录时,我们注意到每个与会者ItemId
都不同.因此,会议中的每个与会者似乎都会获得自己的约会副本.(真的希望有人确认这是真的).
但是,从我们的加载项设置自定义属性(使用Outlook JavaScript API)时,只有组织者的约会才能获得自定义属性,因为当我们以任何其他与会者身份登录时,我们无法看到自定义属性.
我们的代码中的代码片段是相关的:
Office.initialize = function (reason) {
$(document).ready(function () {
Office.context.mailbox.item.loadCustomPropertiesAsync (onCustomPropertiesLoaded);
});
};
function onCustomPropertiesLoaded(asyncResults) {
_customProps = asyncResults.value;
}
//Set custom properties
_customProps.set("myProp", "true");
_customProps.saveAsync(customPropertiesOnSaved);
Run Code Online (Sandbox Code Playgroud)
有没有办法让每个约会副本都有自定义属性?
ms-office office-addins exchangewebservices outlook-addin office-js
用例:
我们正在创建一个分析邮件内容的系统。如果我们能够根据其内容对电子邮件进行分类和存档,我们希望自动对同一对话/线程中的后续电子邮件进行分类。
问题在于,当我们代表不同用户查询时,作为(邮件)消息的一部分获得的对话 ID 不是唯一的。
一个例子:
答:我的收件箱中给定线程的对话 ID。
B:同一线程的 sessionId,但在不同用户的收件箱中。
价值观:
答:AAQkADUyZWYxNzljLTc4NjItNGMzYy1iZDYwLTE4NWEzNDg1OWUzZQAQABlanHOPI0v1ukA7KePaYv4=
。乙:AAQkAGVkNGRjNWNmLTAwNTItNDA2NC1hOThhLTU5NTUyNGFjNTM5ZAAQABlanHOPI0v1ukA7KePaYv4=
。
我可以使用此对话 ID 的一部分来识别不同用户之间的相同对话吗?该模式似乎是给定对话的最后 25-26 个字符是唯一的。其余的是 Guid + 某种后缀。
编辑:我的问题与 Microsoft Graph API 的使用有关。在 SO 上回答了与 ConversationIds 和 Outlook 电子邮件相关的问题,但这些问题描述了直接从 Outlook 客户端(或可能通过 Outlook api)获取电子邮件的情况。例如,像 ConversationIndex 和 ConversationTopic 这样的属性不在我从 Graph API 获得的消息中。
outlook outlook-addin office-js outlook-web-addins microsoft-graph-api
我正在开发 Microsoft Outlook 的加载项,我们的一些 Outlook for Mac 用户最近报告说,如果打开了“新 Outlook”开关,他们将无法查看功能区中的任何加载项。如果单击功能区中的“...”选项,则可以在下拉菜单中访问“获取加载项”选项,但此“获取加载项”选项被禁用。主收件箱窗口和单独的阅读/撰写窗口都会受到影响。
我能够在 Outlook for Mac 版本 16.45 (21011103) 中复制该问题。
这是预期的行为吗?如果没有,是否有办法让加载项再次显示在功能区中?
谢谢。
outlook-addin ×10
outlook ×6
c# ×5
vsto ×4
ms-office ×3
office-js ×3
attachment ×1
debugging ×1
macos ×1
outlook-2007 ×1
plugins ×1
ribbon ×1
sql-server ×1
webex ×1