【问题标题】:Create Outlook appointment via C# .Net通过 C# .Net 创建 Outlook 约会
【发布时间】:2015-07-17 23:30:33
【问题描述】:

我需要使用microsoft.office.interop.outlook 创建一个 Outlook 约会,但是虽然我可以让它在我自己的工作站上本地工作,并且如果我通过服务器的浏览器运行 Web 应用程序,它也可以工作,但当我连接时它不起作用到服务器外部。

因此,我认为这可能是权限问题。

我将application pool identity 更改为“LocalSystem”所以现在我没有收到拒绝访问错误。不幸的是,它实际上不起作用。

应用的行为就像约会已成功创建,但约会未出现在 Outlook 中。

这是我的 aspx.cs 页面顶部的包含文件

using Outlook = Microsoft.Office.Interop.Outlook;

这是我用来弹出约会的代码。

Outlook.Application apptApp = new Outlook.Application();
Outlook.AppointmentItem appt = 
      apptApp.CreateItem(Outlook.OlItemType.olAppointmentItem) as Outlook.AppointmentItem;
appt.Subject = txtFirstName.Text + " " + txtLastName.Text;
appt.Body = txtComment.Text;
appt.AllDayEvent = false;
appt.Start = DateTime.Parse(txtReminderDate.Text + " 8:00 AM");
appt.End = DateTime.Parse(txtReminderDate.Text + " 9:00 AM");
appt.Display(false);

正如我所说,如果我在服务器上使用localhost,它可以工作,但如果我尝试通过另一台机器从外部访问该应用程序,它什么也不做。

我确实在服务器上安装了 Outlook 2003 以访问 interop.outlook 文件并添加了对 microsoft.office.core 的引用。

任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: c# .net outlook iis-7.5 windows-server-2012-r2


    【解决方案1】:

    在您的 web.config 文件中设置授权访问:

    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
    

    如果有帮助,我使用以下方法创建 Outlook 约会:

    private void CreateOutlookGroupMeetingAppointment(List<string> emailRecipients, string meetingPlace, string shortDescription, string longDescription, DateTime start, DateTime finish)
    {
        try
        { 
            Microsoft.Office.Interop.Outlook.Application ApplicationInstance = null;
    
            Microsoft.Office.Interop.Outlook.AppointmentItem AppointmentInstance = null;
    
            ApplicationInstance = new Microsoft.Office.Interop.Outlook.Application();
    
            AppointmentInstance = (Microsoft.Office.Interop.Outlook.AppointmentItem) ApplicationInstance.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem);
    
            foreach (string EmailRecipient in emailRecipients)
            {
                AppointmentInstance.Recipients.Add(EmailRecipient);
    
            }
    
            AppointmentInstance.Subject = shortDescription;
    
            AppointmentInstance.Body = longDescription;
    
            AppointmentInstance.Location = meetingPlace;
    
            AppointmentInstance.Start = start;
    
            AppointmentInstance.End = finish;
    
            AppointmentInstance.ReminderSet = true;
    
            AppointmentInstance.ReminderMinutesBeforeStart = 15;
    
            AppointmentInstance.Importance = Microsoft.Office.Interop.Outlook.OlImportance.olImportanceHigh;
    
            AppointmentInstance.BusyStatus = Microsoft.Office.Interop.Outlook.OlBusyStatus.olBusy;
    
            AppointmentInstance.Save();
    
            AppointmentInstance.Send();
    
        }
        catch //(Exception ex)
        {
            //ex.HandleException();
    
        }
    
    }
    

    我使用 .Net 4.5,并引用名为“Microsoft.Office.Interop.Outlook”的扩展名(项目 => 添加引用)(版本 15.0.0.0,文件版本 15.0.4420.1017)

    【讨论】:

      【解决方案2】:

      您应该尝试使用 EWS(交换 Web 服务),而不是使用 Outlook 互操作。至于您当前的问题,当您将服务部署到外部机器时,您的服务运行在什么凭据下?我们遇到了您/您的机器可以访问 Outlook 服务器的问题,因此当您在本地运行它时,一切正常。但是,当您将其部署到计算机时,它会在没有适当权限的不同凭据下运行。

      【讨论】:

      • 我将该网站的应用程序池更改为 localsystem 我认为这就足够了,我读到它可能是一个 dcom 配置设置,但在那里找不到前景。
      • 您可以尝试运行应用程序池,看看是否能解决问题
      猜你喜欢
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 2018-05-20
      • 1970-01-01
      相关资源
      最近更新 更多