通过C#.Net创建Outlook约会

本文关键字:Outlook 约会 创建 Net 通过 | 更新日期: 2023-09-27 18:03:14

我需要使用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约会

在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(

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

在服务(包括IIS(中不能使用任何Office应用程序(包括Outlook(。

您的选择是

  1. 如果是Exchange Server,请使用EWS访问邮箱。

  2. 扩展MAPI(仅限C++或Delphi(

  3. Redemption(我是它的作者,任何语言(-它包装了Extended MAPI,它的RDO系列对象可以从服务中使用。