将邮件转移到其他邮箱
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将邮件转移到其他邮箱相关的知识,希望对你有一定的参考价值。
我正在开发一个应用程序,我需要将邮件从邮箱传输到另一个邮箱。我无法使用smtp发送这些邮件,因为这将更改标题信息。我正在使用C#并查看api来处理邮件。我可以在不改变邮件标题的情况下将邮件转移到其他邮箱。
通过转移我的意思是,我需要从一个邮箱收取邮件并将其移动到另一个邮箱而不更改任何标头信息。如果我使用smtp,标题信息将被更改。我听说使用MAPI邮件可以从一个邮箱移动到另一个邮箱。任何指针。
如果无法将所有相关邮箱加载到单个Outlook配置文件中,则无法使用Outlook API解决此问题。但是,应该可以从通过扩展MAPI直接访问Exchange信息存储的管理帐户运行独立应用程序。然后,您可以按顺序打开源邮箱,并将相关邮件项目移动到目标邮箱。
这将允许您在单个巨型操作中运行从中央位置收集所有邮箱的批处理作业。但是,如果您的任务是移动消息,那么可能通过安装在源计算机上的Outlook插件以更分散的方式解决此问题,这可能是一种更明智的方法。也许如果你告诉我们更多关于你移动这些物品的动机,我们可以提出一个更好的解决方案。
如果你采用集中式收割机的方法,我强烈建议使用像Redemption这样的辅助库,但是否则可能需要几个月才能收集到足够的知识来解决这个问题。 RDO框架(Redemption Data Objects)应该特别适合让您尽快运行。
我可以使用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);
这样,邮件将被复制到新邮箱而不会更改任何标题信息。
如果您使用Outloook API,我确信支持备份和还原。因此,从一个帐户备份您的邮件,然后在另一个帐户上恢复它。这将是我的第一次尝试。 PS:我不熟悉API。
邮箱的关系是什么?它们是否在同一台Exchange服务器上?如果是这样,最好的办法是使用MAPI复制邮件。如果没有,您可以将邮件导出到PST或.msg文件的集合。这是否需要自动化?
“转移”究竟是什么意思?如果您正在谈论相同的拖放操作从一个邮箱拖放到同一个Outlook配置文件中的另一个邮箱,那么只需使用MailItem.Move
方法即可。
那你需要的是MAPI。这是一个非常复杂的API。有一本关于它的长篇绝版书,但就是这样。最好的起点是下载MFCMapi,看看你如何做你需要的,例如打开两个用户的邮箱并在它们之间复制邮件。然后,查看MFCMapi的源代码,看看它是如何完成的,并从那里开始工作。
以上是关于将邮件转移到其他邮箱的主要内容,如果未能解决你的问题,请参考以下文章