没有visual studio执行邮件阅读器程序

时间:2013-01-25 04:00:58

标签: c# .net visual-studio-2008 outlook

参考我的previous question,我已经编写了我的程序,当我使用VS2008运行它时,它的工作非常棒。

我还有两个问题:

1。我想在运行我的程序时与你们核实所有邮件都作为xml文件出现在VS输出中, 但是我从来没有用它来打印它们输出。 通常是所有人或我需要添加一些东西来删除它。我觉得从PC上显示输出邮件需要很长时间。

2。我的第二个问题是,当我想只使用exe文件时(通过exe文件运行程序而不是VS)我收到以下错误并且程序挂起&关闭。

  

“MailReader遇到问题需要关闭。我们是   很抱歉给您带来不便。“

正如我上面提到的,这个程序在VS中运行良好。

我复制了部分阅读邮件的代码并将其拆分以供参考。

public void ReadMail()
        {
            ServicePointManager.ServerCertificateValidationCallback += delegate(object sender,
                                                                                X509Certificate certificate,
                                                                          X509Chain chain,
                                                                                SslPolicyErrors sslPolicyErrors) { return true; };
            try
            {
                ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
                service.TraceEnabled = true;
                service.Credentials = new WebCredentials(_username, _password); //Modify this
                service.Url = new Uri(_exchange); //Modify this
                service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

                service.Url = new Uri(_exchange);
                service.TraceEnabled = true;
                service.Credentials = new WebCredentials(_username, _password); //Modify this
                service.Url = new Uri(_exchange);
                //SearchFilter to get unreaded messages only.
                SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));
                ItemView itemview = new ItemView(Int16.MaxValue);


                //DateTime searchdate = new DateTime(2012, 7, 6); //Year, month, day
                SearchFilter greaterthanfilter = new SearchFilter.IsGreaterThan(ItemSchema.DateTimeSent, Convert.ToDateTime(startDate));
                SearchFilter lessthanfilter = new SearchFilter.IsLessThan(ItemSchema.DateTimeSent,Convert.ToDateTime(finishDate));
                SearchFilter[] f = { greaterthanfilter, lessthanfilter };
                SearchFilter filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, f);
                //Folder folder = Folder.Bind(this.m_Service, WellKnownFolderName.MsgFolderRoot); //Or the folder you want to search in
                //FindItemsResults<Item> results = folder.FindItems(filter, new ItemView(1000));


                FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.SentItems,filter, itemview);

                Action action = () => fr.setText(findResults.Items.Count + "mails need to analysis from "+startDate +" to "+ finishDate);
                fr.Invoke(action, null);

                action = () => fr.setMaximumProgressBar(findResults.Items.Count);
                fr.Invoke(action, null);

                dmd = new List<DailyMailDetails>();

                foreach (Item item in findResults.Items)
                {
                    string messageDate = "Error in Date";
                    string messageSubj = "Error in Subject";
                    int index = 0; 
                    try
                    {
                        PropertySet propertySet = new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.DateTimeSent, ItemSchema.Body, ItemSchema.Subject);
                        propertySet.RequestedBodyType = BodyType.Text;
                        EmailMessage message = EmailMessage.Bind(service, item.Id, propertySet);

                        string temp = startSign.ToUpper();
                        int start = message.Body.Text.ToUpper().IndexOf(temp) + temp.Length;
                        int end = message.Body.Text.ToUpper().IndexOf(finishSign.ToUpper());
                        int len = end - start;
                        string text = message.Body.Text.Substring(start, len);

                        index = findDmdIndex(message.DateTimeSent.ToShortDateString().ToString());

                        if (index == -1)
                        {
                            dmd.Add(new DailyMailDetails(message.DateTimeSent.ToShortDateString().ToString(), (List<PeopleSigniture>)Extensions.Clone<PeopleSigniture>(OrginallistPeopleSign)));
                            index = dmd.Count - 1;
                        }
                        bool signExist = false;

                        for (int i = 0; i < listPeopleSign.Count; i++)
                            if (text.ToUpper().Contains(dmd[index].peopleSign[i].Signiture.ToUpper()))
                            {
                                dmd[index].peopleSign[i].addResponse(message.DateTimeSent.ToString(), message.Subject.ToString());
                                signExist = true;
                                break;
                            }
                        messageDate = message.DateTimeSent.ToString();
                        messageSubj = message.Subject.ToString();
                        if (!signExist)
                            dmd[index].peopleSign[dmd[index].peopleSign.Count - 2].addResponse(message.DateTimeSent.ToString(), message.Subject.ToString());
                    }
                    catch (Exception ex)
                    {
                        dmd[index].peopleSign[dmd[index].peopleSign.Count - 1].addResponse(messageDate, messageSubj);
                    }


                    action = () => fr.increasePrograss();
                    fr.Invoke(action, null);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Class: Mail Function:ReadMail" + ex.Message);
            }
            Action action2 = () => fr.setText(ToString(true),dmd);
            fr.Invoke(action2, null);
        }

1 个答案:

答案 0 :(得分:1)

对于问题#1 - 您正在查看可能因为have EWS tracing enabled而导致的XML输出。您需要将ExchangeService.TraceEnabled设置为false或完全注释掉。 (您还需要清理许多重复的代码行。

service.TraceEnabled = false;

对于问题#2 - 您需要确定实际的.NET异常。没有这个 - 我们无法帮助你。它可能因无数原因而崩溃。请提供堆栈跟踪。