로그인 한 사용자가 아닌 사용자와 함께 Redemption (Outlook) 사용 - 오류가 발생합니다.

StackOverflow https://stackoverflow.com/questions/589254

문제

구속 DLL을 사용하고 있습니다 (http://www.dimast.com/redemption/) 그리고 나는 내 메일 박스에 액세스하는 exe를 만들었습니다.

내 사용자 이름 아래에서 Windows 스케줄러에서 EXE를 실행하고 잘 작동합니다. 이메일이 나에게 전송됩니다 (아래 코드 참조).

스케줄러의 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 = "abc.email@xyz.com";
    string FromEmailAddress = "abc.email@xyz.com";
    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)

내가 잘못하고있는 일에 대한 아이디어가 있습니까? 이런 식으로 구속을 사용할 수 있습니까?

도움이 되었습니까?

해결책

로그인 한 사용자가 보려고하는 메일 상자에 '전체 사서함 권한'을 가지고 있는지 확인하여 결국이 작업을 수행했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top