将邮件转移到其他邮箱

时间:2008-12-11 09:39:24

标签: c# outlook exchange-server mapi

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


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

6 个答案:

答案 0 :(得分: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);

使用此功能,邮件将被复制到新邮箱而不会更改任何标题信息。

答案 1 :(得分:1)

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

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

如果您采用集中式收集器方法,我强烈建议您使用Redemption之类的帮助程序库,尽管如此,在您收集足够的知识来解决任务之前可能需要几个月的时间。 RDO框架(Redemption Data Objects)应该特别适合让您尽快运行。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

“转让”究竟是什么意思?如果您在谈论相同的拖放操作从一个邮箱拖放到同一个Outlook配置文件中的另一个邮箱,那么只需使用MailItem.Move方法。

答案 5 :(得分:0)

那么你需要的是MAPI。这是一个非常复杂的API。有一本关于它的长篇绝版书,但就是这样。最好的起点是下载MFCMapi,看看你如何做你需要的,例如打开两个用户的邮箱并在它们之间复制邮件。然后,查看MFCMapi的源代码,看看它是如何完成的,并从那里开始工作。