1

我正在开发一个应用程序,我需要将邮件从邮箱传输到另一个邮箱。我无法使用 smtp 发送这些邮件,因为这会更改标题信息。我正在使用 C# 和 outlook api 来处理邮件。有什么方法可以在不更改邮件标题的情况下将邮件转移到其他邮箱。


转移我的意思是,我需要从一个邮箱中取出一封邮件并将其移动到另一个邮箱而不更改任何标题信息。如果我使用 smtp ,标题信息将被更改。我听说使用 MAPI 邮件可以从一个邮箱移动到另一个邮箱。任何指针。

4

6 回答 6

2

我能够使用 Redemption 将邮件从一个邮箱移动到另一个邮箱。这就像从一个邮箱复制邮件到另一个邮箱。首先使用兑换登录到目标邮箱。获取对要移动邮件的文件夹的引用。就我而言,它是收件箱。现在将 Outlook 邮件项目转换为 RDOMail 并将 rdomail 复制到目标文件夹。这是代码 -

 rdoSession.LogonExchangeMailbox("TEST", "ServerName");
 RDOExchangeMailboxStore mailBoxStore = (Redemption.RDOExchangeMailboxStore)
 rdoSession.Stores.DefaultStore;
 RDOFolder inboxFolder = null;

            foreach (RDOFolder rdoFolder in mailBoxStore.IPMRootFolder.Folders)
            {
                if (rdoFolder.Name.Equals("Inbox", StringComparison.InvariantCultureIgnoreCase))
                {
                    inboxFolder = rdoFolder;
                    break;
                }
            }
            rdoMail.CopyTo(inboxFolder);

这样,邮件将被复制到新邮箱,而不更改任何标题信息。

于 2008-12-17T10:06:58.743 回答
1

如果您无法将所有相关邮箱加载到单个 Outlook 配置文件中,则无法使用 Outlook API 解决此问题。但是,应该可以从通过扩展 MAPI 直接访问 Exchange 信息存储的管理帐户运行独立应用程序。然后,您可以按顺序打开源邮箱并将相关邮件项目移动到目标邮箱。

这将允许您在单个巨型操作中运行从中央位置收集所有邮箱的批处理作业。但是,如果您的任务是在消息出现时移动它们,那么也许通过安装在源计算机上的 Outlook 插件以更加分散的方式解决这个问题可能是一种更明智的方法。也许如果你告诉我们更多关于你移动这些物品的动机,我们可以想出一个更好的解决方案。

如果您采用集中式收割机方法,我强烈建议您为此使用像Redemption这样的辅助库,否则可能需要几个月的时间才能收集到足够的知识来完成任务。RDO框架(赎回数据对象)应该特别适合让您尽快运行。

于 2008-12-12T14:56:21.303 回答
0

如果您使用 Outlook API,我确信支持备份和恢复。因此,从一个帐户备份您的邮件并在另一个帐户上恢复它。这将是我的第一次尝试。PS:我不熟悉API。

于 2008-12-11T11:46:41.133 回答
0

邮箱是什么关系?它们在同一个 Exchange 服务器上吗?如果是这样,最好的办法是使用 MAPI 来复制消息。如果没有,您可以将消息导出到 PST 或 .msg 文件的集合。这需要自动化吗?

于 2008-12-11T13:20:26.560 回答
0

你所说的“转移”到底是什么意思?如果您说的相当于将邮件从一个邮箱拖放到加载在同一 Outlook 配置文件中的另一个邮箱,那么只需使用该MailItem.Move方法即可。

于 2008-12-11T18:23:00.630 回答
0

那么你需要的是 MAPI。这是一个相当复杂的 API。有一本关于它的绝版书,但仅此而已。最好的起点是下载 MFCMapi 并查看您可能会如何做您需要做的事情,例如打开两个用户的邮箱并在他们之间复制一条消息。然后,查看 MFCMapi 的源代码,看看它是如何完成的,然后从那里开始工作。

于 2008-12-12T12:42:23.600 回答