标签: mapi

在C#中阅读MS Exchange电子邮件

我需要能够监视和读取来自MS Exchange Server(我公司内部)上的特定邮箱的电子邮件.我还需要能够阅读发件人的电子邮件地址,主题,邮件正文并下载附件(如果有的话).

使用C#(或Vb.net)执行此操作的最佳方法是什么?

c# email mapi exchange-server

89
推荐指数
4
解决办法
16万
查看次数

使用PHP访问Exchange的最佳方法?

我正在用PHP编写CMS应用程序,其中一个要求是它必须能够与客户的Exchange服务器连接.我之前已经写了几次这个功能,并且一直使用WebDAV来做这件事,但现在我不再那么做了.

我将在Windows服务器2008上运行IIS或Apache(无首选项)上的站点.我需要做的一些事情包括向给定用户的地址簿添加联系人,以给定用户身份发送电子邮件以及运行联系人的报告用户.

所有这些对于WebDAV来说都很容易,但如果有更好的方法不需要任何可能很快就被弃用的功能.

有任何想法吗?

更新:

Justin,我喜欢使用com对象的想法,我只是担心维护第三个产品以使一切工作......

John,我可以用C#编写一个Web服务来连接这些函数并使用我的PHP应用程序访问它,但它也有点偏僻.

到目前为止,我并不是100%确信其中任何一个都比WebDAV更好......

任何人都可以告诉我我在哪里傻吗?

php windows mapi exchange-server webdav

52
推荐指数
9
解决办法
5万
查看次数

使用Python通过MAPI从Outlook中读取电子邮件

我正在尝试编写一个简短的程序,它将读取我的Exchange/Outlook配置文件中的文件夹中的电子邮件内容,以便我可以操作数据.但是我在查找有关python和Exchange/Outlook集成的大量信息时遇到了问题.很多东西要么很老/没有文档/没有解释.我尝试了几个片段,但似乎得到了同样的错误.我试过Tim Golden的代码:

import win32com.client

session = win32com.client.gencache.EnsureDispatch ("MAPI.Session")

#
# Leave blank to be prompted for a session, or use
# your own profile name if not "Outlook". It is also
# possible to pull the default profile from the registry.
#
session.Logon ("Outlook")
messages = session.Inbox.Messages

#
# Although the inbox_messages collection can be accessed
# via getitem-style calls (inbox_messages[1] etc.) this
# is the recommended approach from Microsoft since the
# Inbox can mutate while you're iterating.
# …
Run Code Online (Sandbox Code Playgroud)

python mapi outlook exchange-server cdo.message

40
推荐指数
3
解决办法
10万
查看次数

将库添加到Visual Studio 2008 C++项目

我是Visual Studio的新手,我在使用Visual Studio 2008启动项目时遇到了一些麻烦.我正在尝试使用MAPI,当我去构建项目时,我收到这样的错误消息:

"未解析的外部符号_MAPIUninitialize @ 0在函数_main中引用"

我知道我需要链接到MAPI32.lib,但到目前为止我找到的指南已经指示进入"Visual Studio设置链接选项卡"并将其添加到那里(显然是 - 从较旧版本的Visual Studio).我在VS 2008的项目属性链接器或C/C++部分找不到类似的东西.

我在哪里需要告诉Visual Studio使用该库?

谢谢

c++ mapi visual-studio-2008

24
推荐指数
3
解决办法
7万
查看次数

如何在Windows 10 Mail App中打开包含附件的新电子邮件

我正在尝试为我的C#/ .Net应用添加一项功能,以便用户通过电子邮件发送文件.当用户安装了Outlook时,我可以成功使用Outlook互操作API来完成我想要的操作.但是,在新的Windows 10安装中,我无法弄清楚如何在默认的Mail应用程序中打开带有附件的电子邮件,该应用程序来自Windows应用商店.

我试过了:

  1. 使用EML文件,按照/sf/answers/1791039771/

    • Mail应用程序不会注册自己以打开EML文件
  2. 使用MAPI32.dll等(我使用了https://github.com/metageek-llc/inSSIDer-2/blob/master/MetaScanner/UnhandledException/MapiMailMessage.cs中的代码)

    • 弹出一个对话框,说明没有注册电子邮件程序.邮件应用程序似乎不与MAPI交互
  3. 使用mailto:链接.

    • 邮件程序打开,但不尊重Attachment =或Attach =参数

  • Windows.ApplicationModel.Email.EmailMessage似乎只能在手机上使用.

  • 我不想使用SMTP发送消息服务器端.

  • 我还尝试了与Mail应用程序关联的MS-UNISTORE_EMAIL:和OUTLOOKMAIL:url方案,它们的行为与mailto相同:

  • 似乎没有任何方法可以从命令行启动Mail应用程序

.net c# windows email mapi

14
推荐指数
1
解决办法
3093
查看次数

MAPI和托管代码体验?

官方不支持在托管代码中使用MAPI函数.显然,MAPI使用自己的内存管理,它在托管代码中崩溃和烧毁(请参阅此处此处)

我想要做的就是启动包含主题,正文和一个或多个附件的默认电子邮件客户端.

所以我一直在研究MAPISendDocuments,它似乎工作.但我无法鼓起勇气在生产代码中实际使用该功能.

有没有人经常使用这个功能?你有恐怖故事吗?

PS.不,我不会用附件的命令行参数shellExecute Outlook.exe.

PPS.附件支持是必要条件,所以邮寄地址:解决方案不削减对我来说.

.net email mapi pinvoke

12
推荐指数
1
解决办法
3420
查看次数

Python读取我的Outlook电子邮件邮箱并解析邮件

可能重复:
使用Python通过MAPI从Outlook读取电子邮件

我是Python的新手,并且已经完成了编写连接到我的Microsoft Outlook邮箱的程序,查看所有电子邮件以及主题是否有某个单词的任务,然后将保存电子邮件时间和主题的详细信息在变量中,以及电子邮件消息正文将被解析,相关信息将存储在变量中.然后,此信息将存储在外部服务器/数据库中.它还需要能够监控到我邮箱的任何新电子邮件,并重复检查主题行并采取适当措施的练习.

我之前使用Interop库在C#中编写了完全相同的程序,但现在需要在Python中执行此操作.我可以通过稍后阅读模块文档来了解细节,但从高层次的角度来看,我应该使用哪些模块.我一直在做我的研究,并且已经提到的一些模块包括电子邮件,procmail和imaplib,但是这里的Python老手对于我超越的项目推荐了什么?

提前感谢您提供的任何帮助!

python mapi outlook win32com imaplib

10
推荐指数
1
解决办法
3万
查看次数

从Python修改Microsoft Outlook联系人

我过去编写了一些Python工具来从Outlook联系人中提取数据.现在,我正在尝试修改我的Outlook联系人.我发现我的更改正在被Outlook注意到,但它们并没有坚持下去.我似乎在更新一些缓存,但不是真正的记录.

代码很简单.

import win32com.client
import pywintypes

o = win32com.client.Dispatch("Outlook.Application")
ns = o.GetNamespace("MAPI")
profile = ns.Folders.Item("My Profile Name")
contacts = profile.Folders.Item("Contacts")
contact = contacts.Items[43] # Grab a random contact, for this example.
print "About to overwrite ",contact.FirstName, contact.LastName
contact.categories = 'Supplier' # Override the categories

# Edit: I don't always do these last steps.
ns = None 
o = None
Run Code Online (Sandbox Code Playgroud)

此时,我切换到Outlook,它打开到详细地址卡视图.

我查看联系人摘要(不打开它),类别不变(不刷新?).

我打开联系人,其类别有时会改变.(不确定何时,但感觉它与缓存有关.)如果它已经改变,它会在我关闭它时提示我保存更改这是奇怪的,因为我没有在Outlook UI中更改任何内容.

如果我退出并重新启动Outlook,则更改将会消失.

怀疑我没有调用SaveChanges,但我看不到哪个对象支持它.

所以我的问题是:

  • 我应该打电话给SaveChanges吗?如果是的话,它在哪里?
  • 我是否犯了其他一些愚蠢的错误,导致我的数据被丢弃?

python mapi winapi outlook

9
推荐指数
1
解决办法
4161
查看次数

使用EntryID,StoreID和/或PR_ENTRYID打开Outlook邮件项

注意:我正在使用VBA和Office 2007.(我会使用C#,但项目参数不允许这样做)

我试图在Outlook或API中找到一些方法,允许我通过从Access数据库提供Outlook EntryID或MAPI"PR_ENTRYID"属性来打开Outlook邮件项.我找到了许多对所述代码的引用,但我从未见过有人真正发布过一个解决方案.我试图包括对mapi32.dll和OLMAPI32.dll的引用,但是我收到以下错误:"无法添加对指定文件的引用." 我猜这是因为那些dll是用于.NET的.

您将给予的任何帮助将不胜感激.

mapi outlook vba exchange-server mailitem

8
推荐指数
1
解决办法
2万
查看次数

Outlook Mapi访问共享联系人

我想通过Mapi从Outllok导入联系人.标准联系的第一步没有问题:

MAPIFolder contactObjects = 
outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
foreach (ContactItem contactObject in contactObjects.Items) {
    ... import contact ...
}
Run Code Online (Sandbox Code Playgroud)

在第二步中,我还想要导入共享联系人.我发现只有使用

OpenSharedItem(sharedContacts.vcf)
Run Code Online (Sandbox Code Playgroud)

但我不知道我想打开的文件(共享项)的名称.有人知道如何访问共享联系人并可以帮助我吗?

托比


更新:

感谢vcf-Files的提示.但是我在哪里可以找到它们?


UPDATE2:

我玩了OutlookSpy.我可以访问具有共享联系人的文件夹,但只能通过知道id(对于其他用户当然不同):

var ns = outlookObj.GetNamespace("MAPI");
var flr = ns.GetFolderFromID("00000000176A90DED92CE6439C1CB89AFE3668F90100D1AD8F66B576B54FB731302D9BB9F6C40007E4BAC5020000");

foreach (var contactObject in flr.Items) {
       ...
}
Run Code Online (Sandbox Code Playgroud)

如何在不知道ID的情况下访问该文件夹?

c# mapi outlook shared

8
推荐指数
1
解决办法
1295
查看次数