如何在服务器C#上打开Outlook新邮件窗口

时间:2015-04-25 06:26:03

标签: c# email outlook

我正在使用此链接打开Outlook新邮件窗口。 How to open Outlook new mail window c#

但它在本地计算机上工作正常,但是当我在服务器上部署它时,它显示错误。

  

使用CLSID检索组件的COM类工厂   {0006F03A-0000-0000-C000-000000000046}由于以下原因而失败   错误:80040154未注册类(HRESULT异常:   0x80040154(REGDB_E_CLASSNOTREG))。

Microoft office outlook安装在不在服务器上的本地机器上。需要在服务器上安装和配置outlook。 Plz的帮助。 感谢。

3 个答案:

答案 0 :(得分:0)

<强> 1。使用Outlook

要使用outlook发送电子邮件,我们需要添加对Outlook动态链接库的引用,该引用称为Microsoft.Office.Interop.Outlook.dll 同样遵循以下步骤:

  • 转到解决方案资源管理器
  • 点击添加引用
  • 单击.Net选项卡
  • 浏览DLL并选择Microsoft.Office.Interop.Outlook.dll 正确。
  • 选择正确的引用后,选择“确定”按钮,此引用将添加到引用下的项目中。

    using Outlook = Microsoft.Office.Interop.Outlook;
    //method to send email to outlook
    public void sendEMailThroughOUTLOOK()
    {
        try
        {
        // Create the Outlook application.
        Outlook.Application oApp = new Outlook.Application();
        // Create a new mail item.
        Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
        // Set HTMLBody. 
        //add the body of the email
        oMsg.HTMLBody = "Hello, Jawed your message body will go here!!";
        //Add an attachment.
        String sDisplayName = "MyAttachment";
        int iPosition = (int)oMsg.Body.Length + 1;
        int iAttachType = (int)Outlook.OlAttachmentType.olByValue;
        //now attached the file
        Outlook.Attachment oAttach = oMsg.Attachments.Add(@"C:\\fileName.jpg", iAttachType, iPosition, sDisplayName);
        //Subject line
        oMsg.Subject = "Your Subject will go here.";
        // Add a recipient.
        Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients;
        // Change the recipient in the next line if necessary.
        Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add("jawed.ace@gmail.com");
        oRecip.Resolve();
        // Send.
        oMsg.Send();
        // Clean up.
        oRecip = null;
        oRecips = null;
        oMsg = null;
        oApp = null;
         }//end of try block
        catch (Exception ex)
        {
        }//end of catch
    }//end of Email Method
    

    了解更多信息Open outlook

  • 答案 1 :(得分:0)

    Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office在此环境中运行Office时,可能会出现不稳定的行为和/或死锁。

    如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已为安全无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多成功运行的必要功能。此外,您将承担整体解决方案稳定性的风险。

    Considerations for server-side Automation of Office文章中详细了解相关内容。

    考虑使用标准的.Net类或为服务器端执行而设计的任何其他组件。如果是Exchange Server帐户,则可以使用EWS(Exchange Web服务),请参阅EWS Managed API, EWS, and web services in Exchange

    答案 2 :(得分:0)

    如果您在服务器上运行该代码,谁将看到新创建的消息?即使有用户本地登录到服务器,IIS也会在没有桌面会话的情况下运行。

    如果您希望消息显示在客户端上,那么您的代码需要运行。为什么不使用mailto url?它将在任何浏览器中工作,并将打开默认电子邮件客户端。如果您需要比这更复杂的东西,您需要使用JavaScript编写代码并使用new ActiveXObject().创建Outlook.Application对象的实例。您只能在IE中执行此操作,并且必须信任您的站点才能执行此操作。