none
调用outlook app 的问题 RRS feed

  • 问题

  • 在调用 Outllook.NameSpace 的SendAndReceive 方法时出现错误:您必须注册到电子邮件服务,才能执行该任务。 谁知道要怎么解决这个问题吗?
    2012年1月11日 4:42

答案

全部回复

  • 您目前程式碼怎麼寫的?

    參考此範例看看

    How To: Perform Send/Receive in Outlook programmatically

    http://www.add-in-express.com/creating-addins-blog/2011/10/05/outlook-send-receive-programmatically/


    歡迎參觀我的Blog.NET菜鳥自救會
    2012年1月11日 5:33
  • thanks 这个问题已经解决了 但是在windows server 2003 部署程序的时候出现新的错误。。。DCOM配置里里找不到OUTLOOK配置的地方。。....Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).

    在DCOM 只找到个Outlook  message attachment 但是配置好这个还是报错 

     

    2012年1月11日 6:49
  • 又出现新的问题了,用户那边的OUTLOOK配置的EXCHANGE账户 程序运行后很多封邮件只能取到收件箱中的几封邮件。。。查不出是什么问题。。。代码如下

    public void GetMail()
            {
    
                Outlook.Application oApp = new Outlook.Application();
                Outlook.NameSpace NS = oApp.GetNamespace("MAPI");
              
    
                Outlook.MAPIFolder inboxFld = NS.CurrentUser.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
                Outlook.MAPIFolder deleteFld = NS.CurrentUser.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDeletedItems);
                Outlook.Items items = inboxFld.Items;     
    
                items.Restrict("[Unread] = true");
                try
                {
                    MailCount = 0;
    
    
                        foreach (Outlook.MailItem m in items)
                        {
                            bool isResumeMail = true;
                            //Outlook.MailItem m = inboxFld.Items[i];
    
    
                            if (isResume(Name51Job, m))
                            {
                                Parsing51JobMail(m);
                                MailCount++;
                            }
                            else
                            {
                                if (isResume(NameZhilian, m))
                                {
                                    ParsingZhiLianMail(m);
                                    MailCount++;
                                }
                                else
                                {
                                    if (isResume(NameYingJie, m))
                                    {
                                        ParsingYingJieMail(m);
                                        MailCount++;
                                    }
                                    else
                                        isResumeMail = false;
                                }
                            }
    
                            if (isResumeMail)
                                m.Delete();
    
    
                        }
                    
    
    
                }
                catch
                {
    
                }
                finally
                {
    
                    for (int i = 1; i < deleteFld.Items.Count + 1; i++)
                    {
                        Outlook.MailItem m = deleteFld.Items[i];
                        m.Delete();
                    }
                    if (NS != null) Marshal.ReleaseComObject(NS);
    
                }
    
    
            }
    


     

    2012年1月13日 8:51
  •  

    Hi LibertySun,

    Welcome to MSDN Forum.

    You can check this case for some reference. 

    Read Outlook (mails, contacts, calendars, meetings, appointments, tasks etc.) and convert into DataTable objects and binding into DataGridView

    http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ce4031da-7448-475f-bac6-d20e04072164

    For Outlook programming issues, it's likely to get efficient support at the dedicated Outlook Developers Forum http://social.msdn.microsoft.com/Forums/en-US/outlookdev/threads

     


    Martin Xie [MSFT]
    MSDN Community Support | Feedback to us
    2012年1月17日 6:18
    版主