我需要能够监视和读取来自MS Exchange Server(我公司内部)上的特定邮箱的电子邮件.我还需要能够阅读发件人的电子邮件地址,主题,邮件正文并下载附件(如果有的话).
使用C#(或Vb.net)执行此操作的最佳方法是什么?
我正在用PHP编写CMS应用程序,其中一个要求是它必须能够与客户的Exchange服务器连接.我之前已经写了几次这个功能,并且一直使用WebDAV来做这件事,但现在我不再那么做了.
我将在Windows服务器2008上运行IIS或Apache(无首选项)上的站点.我需要做的一些事情包括向给定用户的地址簿添加联系人,以给定用户身份发送电子邮件以及运行联系人的报告用户.
所有这些对于WebDAV来说都很容易,但如果有更好的方法不需要任何可能很快就被弃用的功能.
有任何想法吗?
Justin,我喜欢使用com对象的想法,我只是担心维护第三个产品以使一切工作......
John,我可以用C#编写一个Web服务来连接这些函数并使用我的PHP应用程序访问它,但它也有点偏僻.
到目前为止,我并不是100%确信其中任何一个都比WebDAV更好......
任何人都可以告诉我我在哪里傻吗?
我正在尝试编写一个简短的程序,它将读取我的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) 我是Visual Studio的新手,我在使用Visual Studio 2008启动项目时遇到了一些麻烦.我正在尝试使用MAPI,当我去构建项目时,我收到这样的错误消息:
"未解析的外部符号_MAPIUninitialize @ 0在函数_main中引用"
我知道我需要链接到MAPI32.lib,但到目前为止我找到的指南已经指示进入"Visual Studio设置链接选项卡"并将其添加到那里(显然是 - 从较旧版本的Visual Studio).我在VS 2008的项目属性链接器或C/C++部分找不到类似的东西.
我在哪里需要告诉Visual Studio使用该库?
谢谢
我正在尝试为我的C#/ .Net应用添加一项功能,以便用户通过电子邮件发送文件.当用户安装了Outlook时,我可以成功使用Outlook互操作API来完成我想要的操作.但是,在新的Windows 10安装中,我无法弄清楚如何在默认的Mail应用程序中打开带有附件的电子邮件,该应用程序来自Windows应用商店.
我试过了:
使用EML文件,按照/sf/answers/1791039771/
使用MAPI32.dll等(我使用了https://github.com/metageek-llc/inSSIDer-2/blob/master/MetaScanner/UnhandledException/MapiMailMessage.cs中的代码)
使用mailto:链接.
也
Windows.ApplicationModel.Email.EmailMessage似乎只能在手机上使用.
我不想使用SMTP发送消息服务器端.
我还尝试了与Mail应用程序关联的MS-UNISTORE_EMAIL:和OUTLOOKMAIL:url方案,它们的行为与mailto相同:
似乎没有任何方法可以从命令行启动Mail应用程序
官方不支持在托管代码中使用MAPI函数.显然,MAPI使用自己的内存管理,它在托管代码中崩溃和烧毁(请参阅此处和此处)
我想要做的就是启动包含主题,正文和一个或多个附件的默认电子邮件客户端.
所以我一直在研究MAPISendDocuments,它似乎工作.但我无法鼓起勇气在生产代码中实际使用该功能.
有没有人经常使用这个功能?你有恐怖故事吗?
PS.不,我不会用附件的命令行参数shellExecute Outlook.exe.
PPS.附件支持是必要条件,所以邮寄地址:解决方案不削减对我来说.
我是Python的新手,并且已经完成了编写连接到我的Microsoft Outlook邮箱的程序,查看所有电子邮件以及主题是否有某个单词的任务,然后将保存电子邮件时间和主题的详细信息在变量中,以及电子邮件消息正文将被解析,相关信息将存储在变量中.然后,此信息将存储在外部服务器/数据库中.它还需要能够监控到我邮箱的任何新电子邮件,并重复检查主题行并采取适当措施的练习.
我之前使用Interop库在C#中编写了完全相同的程序,但现在需要在Python中执行此操作.我可以通过稍后阅读模块文档来了解细节,但从高层次的角度来看,我应该使用哪些模块.我一直在做我的研究,并且已经提到的一些模块包括电子邮件,procmail和imaplib,但是这里的Python老手对于我超越的项目推荐了什么?
提前感谢您提供的任何帮助!
我过去编写了一些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,但我看不到哪个对象支持它.
所以我的问题是:
注意:我正在使用VBA和Office 2007.(我会使用C#,但项目参数不允许这样做)
我试图在Outlook或API中找到一些方法,允许我通过从Access数据库提供Outlook EntryID或MAPI"PR_ENTRYID"属性来打开Outlook邮件项.我找到了许多对所述代码的引用,但我从未见过有人真正发布过一个解决方案.我试图包括对mapi32.dll和OLMAPI32.dll的引用,但是我收到以下错误:"无法添加对指定文件的引用." 我猜这是因为那些dll是用于.NET的.
您将给予的任何帮助将不胜感激.
我想通过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的情况下访问该文件夹?