我的工作的应用程序,其中i需要从邮箱传送邮件到anoter one.I使用SMTP因为这willchange .I正在使用C#和流出外表API来处理邮件的报头信息不能发送这些邮件。被THRE任何办法可以传送电子邮件到其它的邮件箱在不改变邮件首部。


通过转移我的意思是,我需要从一个邮件箱取邮件并移动这个到另一个邮箱不改变任何报头信息。如果我使用SMTP,标题信息将被改变。我已经heared,使用MAPI邮件可以从一个邮箱移动到另一个邮箱。任何指针。

有帮助吗?

解决方案

如果您不能所有相关邮箱加载到一个Outlook配置文件,那么这个不能使用Outlook API解决。然而,它应该能够运行从直接通过扩展MAPI访问Exchange信息存储的管理帐户的独立应用程序。然后,您可以打开源邮箱顺序和移动有关邮件的目标邮箱。

这将允许你运行一个批处理作业收割从一个中心位置的所有邮箱在巨单操作。然而,如果你的任务是当它们出现在随后通过安装在源计算机的Outlook加载项更分散的方式也许解决这个可能是更明智的做法毕竟移动邮件。也许,如果你告诉我们多一点关于你的动机移动这些物品,我们可以想出一个更好的解决方案。

如果你去集中收割机的方法,我强烈建议使用一个辅助库如赎回这虽然否则可能将需要几个月的时间,你已经收集了足够的知识来解决任务之前。该 RDO 框架(赎回数据对象)应当尤其适合让你尽快运行。

其他提示

我能够将邮件从一个邮件框移动到另一个使用赎回。这就像从一个邮箱到另一个副本的邮件。第一次登录使用赎回目标邮箱。 获取引用您要移动邮件的文件夹。就我而言,这是收件箱。现在转换成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,看看它是如何做,并从那里工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top