c# - 与登录用户以外的用户一起使用兑换 (Outlook) - 并收到错误

标签 c# outlook outlook-2003 outlook-redemption

我正在使用 Redemption dll ( http://www.dimastr.com/redemption/ ),并且我创建了一个可以访问我的邮箱的 exe。

我在 Windows Scheduler 中以我的用户名运行该 exe,它工作正常,我收到一封发送给我的电子邮件(请参阅下面的代码)。

当我将 Scheduler 中的 runas 用户名更改为其他人并尝试访问他们的邮箱配置文件时,我收到错误。 System.IO.FileLoadException

static void Main(string[] args)
{

    System.Diagnostics.Debugger.Break();

    object oItems;

    //string outLookUser = "My Profile Name";
    string outLookUser = "Other User Profile Name";

    string ToEmailAddress = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7e1f1c1d501b131f17123e060704501d1113" rel="noreferrer noopener nofollow">[email protected]</a>";
    string FromEmailAddress = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="214043420f444c40484d6159585b0f424e4c" rel="noreferrer noopener nofollow">[email protected]</a>";
    string outLookServer = "exchangeServer.com";

    string sMessageBody =
        "\n outLookUser: " + outLookUser +
        "\n outLookServer: " + outLookServer +
        "\n\n";

    RDOSession Session = null;

    try
    {
        rdoDefaultFolders olFolderInbox = rdoDefaultFolders.olFolderInbox;

        Session = new RDOSession();
        RDOFolder objFolder;

        Session.LogonExchangeMailbox(outLookUser, outLookServer);

        int mailboxCount = Session.Stores.Count;
        string defaultStore = Session.Stores.DefaultStore.Name;

        sMessageBody +=
        "\n mailboxCount: " + mailboxCount.ToString() +
        "\n defaultStore: " + defaultStore +
        "\n\n";


        //RDOStore rmpMetering = Session.Stores.GetSharedMailbox("Name of another mailbox");
        //objFolder = rmpMetering.GetDefaultFolder(olFolderInbox);

        objFolder = Session.GetDefaultFolder(olFolderInbox);

        oItems = objFolder.Items;
        int totalcount = objFolder.Items.Count;
        if (totalcount > 10) totalcount = 10;

        for (int loopcounter = 1; loopcounter < totalcount; loopcounter++)
        {
            RDOMail oItem = objFolder.Items[loopcounter];

            string attachmentName = string.Empty;
            foreach (RDOAttachment attachment in oItem.Attachments)
            {
                attachmentName += attachment.FileName + " ";


                if (attachmentName.Trim() == "Data.csv")
                {
                    attachment.SaveAsFile(@"C:\datafiles\" + attachmentName.Trim());

                    foreach (RDOFolder archiveFolder in objFolder.Folders)
                    {
                        if (archiveFolder.Name == "DataFileArchive")
                        {
                            oItem.MarkRead(true);
                            oItem.Move(archiveFolder);
                        }
                    }
                }
            }

            sMessageBody += oItem.Subject + " " + attachmentName + "\n";
            if ((oItem.UnRead))
            {
                //Do whatever you need this for                    
                //sMessageBody = oItem.Body;
                //oItem.MarkRead(true);
            }
        }

        System.Web.Mail.SmtpMail.Send(ToEmailAddress,FromEmailAddress
            , "Data File Processing-" + DateTime.Now.ToString()
            ,"" + sMessageBody);

    }
    catch (Exception ex)
    {
        Session = null;

        System.Web.Mail.SmtpMail.Send(ToEmailAddress, FromEmailAddress, "Error", sMessageBody + " " + ex.Message);

    }
    finally
    {
        if ((Session != null))
        {
            if (Session.LoggedOn)
            {
                Session.Logoff();
            }
        }
    }

}

当我尝试在另一台已登录的计算机上运行相同的 exe 时,出现此错误,

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or ass
embly 'Interop.Redemption, Version=4.7.0.0, Culture=neutral, PublicKeyToken=null
' or one of its dependencies. The system cannot find the file specified.
File name: 'Interop.Redemption, Version=4.7.0.0, Culture=neutral, PublicKeyToken
=null'
   at RPMDataFileProcessing.Program.Main(String[] args)

有人对我做错了什么有任何想法吗?可以用这种方式使用救赎吗?

最佳答案

我最终通过确保您登录的用户对您要查看的邮箱拥有“完整邮箱权限”来实现此目的。

关于c# - 与登录用户以外的用户一起使用兑换 (Outlook) - 并收到错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/589254/

相关文章:

excel - 使用 VBA 提取 Microsoft Exchange 自定义/扩展属性?

c# - 在生成的邮件中添加默认的outlook签名

Java GroupWise 邮件客户端

c# - 依赖注入(inject) Unity - 条件解析

c# - RemoveDuplicates 函数 - 如何设置多列?

html - outlook中垂直文本对齐不居中[附图]

css - 从 Outlook 文本左对齐发送的 html 电子邮件在 gmail IE 中不起作用

c# - 如何在 outlook 命令栏上的控件之间创建垂直分隔符?

c# - 使用 C# 更新 Redis 中的值

c# - 字符串长度的 linq 函数 OrderByDescending 和 OrderBy 在内部如何工作?它比用循环做更快吗?