需要用c++检查Exchange服务器的收件箱

Need to check the inbox of an Exchange server with C++

本文关键字:服务器 收件箱 Exchange 检查 c++      更新时间:2023-10-16

我正在用c++做一个在Microsoft Exchange服务器上备份和恢复电子邮件的项目,我正在尝试为恢复功能编写自动测试。现在我可以创建测试用户、数据库和邮箱,并且可以通过Exchange Admin Powershell在用户之间发送电子邮件。然而,Exchange没有命令行来查看或删除电子邮件(据我所知)。有办法做到这一点与直接交换命令吗?

我没有找到一种方法,所以我正在寻找一个IMAP API,我可以添加到项目中,以启用查看和删除电子邮件。免费将是理想的,但它不能使用GPL许可。有没有一个没有GPL的c++ IMAP API ?有没有一种方法可以程序化地查看和删除我还没有尝试过的电子邮件?

编辑:老实说,我对如何做这件事并不太挑剔,我只是需要一种方法来做。我愿意接受任何建议。

https://technet.microsoft.com/en-us/library/ff459253(v=exchg.150).aspx

搜索邮箱可以删除消息。

https://technet.microsoft.com/en-us/library/ee633455 (v = exchg.150) . aspx

ExportMailboxRequest和ImportMailboxRequest cmdlet完成了导入和导出数据的大部分繁重工作。

为什么你需要读消息?Powershell还可以使用Outlook库命令编写客户端脚本。

编辑

在你的测试邮件里放一个"神奇短语"。"MagicRainbowUnicorn"。
  1. 删除留言

    Search-Mailbox -Identity "TestMailbox" -SearchQuery 'MagicRainbowUnicorn' -DeleteContent
    
  2. Test for message

    Switch ((Search-Mailbox -Identity "TestMailbox" -SearchQuery 'MagicRainbowUnicorn').count) {
        0 { "No Results Found" }
        1 { "One Result" }
        default { "More than One, or some other strange Result" }
        }
    

我没有足够的声誉来评论,但是您可以使用c++来使用Exchange Web Services吗?我用c#编写了一些使用EWS监控邮箱的程序。我可以从Exchange中查看和删除消息。

[编辑]这是我在c#中使用的一个示例,如果你决定使用c#而不是c++的话。或者它会指引你走向一个好的方向。

using Microsoft.Exchange.WebServices.Data;
ExchangeService svc = new ExchangeService(ExchangeVersion.Exchange2010);
svc.Credentials = new WebCredentials("user@domain.com", "password");
svc.AutodiscoverUrl("user@domain.com");
// loop through messages in Inbox
foreach (EmailMessage msg in svc.FindItems(WellKnownFolderName.Inbox, new ItemView(int.MaxValue)))
{
    // do stuff with message
}