Tag: mapi

Outlook PropertyFrom MAPI架构属性ID

我希望从MAPI架构属性中获取实际的属性名称。 我正在获取MAPI Schema属性“ http://schemas.microsoft.com/mapi/proptag/0x67AA000B ”,但我想知道这对应于哪个字段(IE Anniversary,BusinessAddress等)。 任何见解将不胜感激。

使用MAPI从服务访问Exchange Server

我的任务是构建一个使用MAPI检查电子邮件的应用程序。 我使用了一个用cpp编码的包装类 ,可以从c#访问。 我意识到将托管代码和非托管代码结合起来不一定是最好的路径,但这是我可以开始工作的。 在使用它之后,我被要求将应用程序作为服务,因此可以在系统未登录时运行。 客户端要求我们使用MAPI,并使用Outlook 2007,但我希望它兼容x86和x64架构。 在几个工作站上运行的单独程序将允许使用单个电子邮件地址发送邮件。 该服务将监控此帐户,查看来自Exchange的新电子邮件,说明无法传递邮件。 发生这种情况时,它会在数据库中记录以供将来更正。 我对扩展MAPI如何工作的理解是它使用登录的人员的配置文件来访问Exchange Server。 我的问题是,当没有人登录系统时是否可以通过MAPI访问Exchange Server? 如果无法做到这一点,当没有用户登录时,OOM是否允许访问特定的电子邮件帐户(或配置文件)? 当主要使用c#时,一种方法会比另一种方法更好吗? 下面是一个包装类如何登录的简短示例。我添加了第二种方法,但从来没有让它登录到当前用户的配置文件以外的配置文件。 BOOL CMAPIEx::Login(LPCTSTR szProfileName, BOOL bInitAsService) { DWORD dwFlags=MAPI_EXTENDED | MAPI_USE_DEFAULT | MAPI_NEW_SESSION; if(bInitAsService) dwFlags|=MAPI_EXPLICIT_PROFILE | MAPI_NT_SERVICE; return (MAPILogonEx(NULL, (LPTSTR)szProfileName, NULL, dwFlags, &m_pSession)==S_OK); } BOOL CMAPIEx::Login(LPCTSTR szProfileName, LPCTSTR szProfilePassword, BOOL bInitAsService) { DWORD dwFlags=MAPI_EXTENDED | MAPI_EXPLICIT_PROFILE | MAPI_NEW_SESSION; if(bInitAsService) […]

我怎样才能获得outlook contact的头像图片?

我正在尝试获取联系人的头像图像。 using Microsoft.Office.Interop.Outlook; public sealed class OutlookAvatarFetcher { private static void FetchAvatars() { var outlook = new Application(); var folder = outlook.GetNamespace(“MAPI”).GetDefaultFolder(OlDefaultFolders.olFolderContacts); var items = folder.Items; for (var i = 0; i < items.Count; ++i) { var contact = items[i + 1] as ContactItem; if (contact == null) continue; if (contact.HasPicture) { // TODO store […]

Outlook Mapi访问共享联系人

我想通过Mapi从Outllok导入联系人。 标准联系的第一步没有问题: MAPIFolder contactObjects = outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts); foreach (ContactItem contactObject in contactObjects.Items) { … import contact … } 在第二步中,我还想要导入共享联系人。 我发现只有使用 OpenSharedItem(sharedContacts.vcf) 但我不知道我要打开的文件(共享项)的名称。 有人知道如何访问共享联系人并可以帮助我吗? 托比 更新: 感谢vcf-Files的提示。 但是我在哪里可以找到它们? UPDATE2: 我玩OutlookSpy。 我可以访问具有共享联系人的文件夹,但只能通过知道ID(当然其他用户不同): var ns = outlookObj.GetNamespace(“MAPI”); var flr = ns.GetFolderFromID(“00000000176A90DED92CE6439C1CB89AFE3668F90100D1AD8F66B576B54FB731302D9BB9F6C40007E4BAC5020000”); foreach (var contactObject in flr.Items) { … } 如何在不知道ID的情况下访问该文件夹?

很好地阅读outlook mailitem属性

我正在为outlook 2007编写一个插件,我想阅读一个MailItem的属性。 特别是我想知道我的附件的所有内容类型。 现在,我现在这样做的方式是这样的: Outlook.MailItem item = OutlookItem as Outlook.MailItem; Outlook.Attachments itt = item.Attachments; foreach (Outlook.Attachment t in item.Attachments) { textBox1.Text += t.PropertyAccessor.GetProperty(“http://schemas.microsoft.com/mapi/proptag/0x370E001F”); } 但我宁愿只是打电话。 t.PropertyAccessor.GetProperty(PR_ATTACH_MIME_TAG); 我不能让你以后的选择工作,但是在msdn文档中提到了这个属性。 (http://msdn.microsoft.com/en-us/library/ms879575.aspx)。 有没有人知道如何在不使用字符串而是使用常量的情况下很好地检索属性?

如何在C#中使用Outlook MAPI打开.eml文件?

我有一个C#应用程序,它读取.msg文件并提取正文和附件。 但是当我尝试加载.eml文件时,应用程序崩溃了。 我正在加载这样的文件: MailItem mailItem = (MailItem)outlookApp.CreateItemFromTemplate(msgFileName); mailItem.SaveAs(fullFilename, OlSaveAsType.olHTML); // save body in html format for(int i = 0; i < mailItem.Attachments.Count; i++) mailItem.Attachments[i].SaveAsFile(filename); // save attachments 这适用于.msg文件,但它不适用于.eml文件。 我不明白为什么.eml文件不起作用,因为我可以在Outlook 2010中打开.eml文件。 如何使用Outlook 主互操作程序集加载.eml文件?

从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作为有效的示例。

Microsoft.Office.Interop.Outlook.Items.Restrict – 无法正常工作

我可以拉电子邮件,浏览它们,将它们标记为已读,甚至排序。 但是,当我试图通过ReceivedTime进行限制时,它似乎不起作用。 无论我输入什么日期/时间,我什么也得不回。我知道当我删除限制时,基于Sort工作,ReceivedTime是有效的。 有什么建议? Application app = new Application(); NameSpace outlookNs = app.GetNamespace(“MAPI”); Microsoft.Office.Interop.Outlook.Folders folders = outlookNs.Folders[ohOptions.PSTName].Folders Microsoft.Office.Interop.Outlook.Items items = folders[“Inbox”].Items; DateTime dt = DateTime.Now.Subtract(new TimeSpan(1,0,0)); items = items.Restrict(“[ReceivedTime] > ‘” + dt.ToString(“MM/dd/yyyy hh:mm:ss tt”) + “‘”); items.Sort(“[ReceivedTime]”, OlSortOrder.olAscending); foreach (MailItem item in items) { String from = item.SenderEmailAddress; }