在使用Redemption dll

时间:2017-03-14 15:55:12

标签: c# outlook exchange-server outlook-redemption

我有一个控制台程序,它使用Redemption dll连接到Outlook 2016并在2个用户之间发送一些电子邮件。

该计划的目的是测试交换/展望。所以,在程序中,我们发送电子邮件,制作会议日程......,然后继续循环并一次又一次地做同样的事情。

运行此程序时发现了一个奇怪的问题。有时,程序会弹出一个窗口并要求提供凭据。用户的凭证是硬编码的,显然工作正常。如屏幕截图所示,程序运行大约476次,弹出窗口显示在第477圈。弹出窗口是随机的,并不总是出现在第477个循环中。在某些机器上,弹出窗口显示在第5个循环。

如果我们使用Taskmgr终止控制台程序,然后重新启动控制台程序,它会继续运行并且不会弹出此凭据窗口。

之前有人看过这个吗?特别是使用救赎?如何解决这个问题?

由于

enter image description here

  • 这里有一些代码。我认为弹出窗口是因为

     RedemptionSession.LogonHostedExchangeMailbox(Mailbox, Mailbox, Password);
    

但是,奇怪的是为什么前466次没问题?是否可以禁用此弹出窗口,即使我们必须让登录失败。

internal bool Login()
{
    bool result = false;

    if (RedemptionSession == null)
    {
        if (InitializeRedemption() == false)
        {
            string error = "Unable to initialize Redemption";
            Log.Error(error);
            TestResult = new TestResult(TestStatuses.Failure, error);
            return result;
        }
    }
... check parameters....

    LoginBegin = DateTime.Now;

    try
    {
        RedemptionSession.LogonHostedExchangeMailbox(Mailbox, Mailbox, Password);
    }
    catch (System.Exception ex)
    {
        Log.Error(ex);
        TestResult = new TestResult(TestStatuses.Failure, ex.Message);
        return result;
    }

    LoginEnd = DateTime.Now;
    result = RedemptionSession.LoggedOn;

    return result;
}

1 个答案:

答案 0 :(得分:0)

在不知道该工具做了什么的情况下(在那个时间以及来自Exchange环境的更多信息),很难猜出可能是什么原因。我目前可以想到的最接近的是ThrottlingPolicy,因为您的工具看起来比普通用户做的更多“流量”。根据工具执行的操作以及 MIGHT 的策略,策略将启动,这被视为“密码提示”。

因此,要检查您是否可以在Exchange上进行进一步的日志调试,或者如果Exchange管理员同意为您的工具中使用的指定任务用户构建new ThrottlingPolicy并为其提供higher values

P.S。 请注意,如果限制策略导致问题,您可能希望重新考虑您的代码,因为在使用Exchange Online here时无法更改限制策略。一个想法可能是(仅用于调试)在操作之间添加30秒保持,以查看是否解决了问题。