通过asp.net发送outlook预约错误HRESULT:0x80004004

时间:2009-06-29 19:36:29

标签: outlook

我正在尝试通过代码发送Outlook预约。我的代码发布在下面。当我在具有IIS 6的服务器上运行它并在域帐户标识下使用应用程序池时,它会抛出此错误。我尝试更改服务器上的各种设置,但都没有。 Outlook 2007已安装。我甚至让域帐户成为本地管理员。请帮忙!

  

描述:未处理的异常   在执行期间发生   当前的网络请求。请查看   堆栈跟踪以获取更多信息   错误及其来源   代码。

     

异常详细信息:   System.Runtime.InteropServices.COMException:   操作中止(异常来自   HRESULT:0x80004004(E_ABORT))

     

第201行:objAppt.Send();

以下代码:

Microsoft.Office.Interop.Outlook.Application objOL 
    = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.AppointmentItem objAppt 
    = (Microsoft.Office.Interop.Outlook.AppointmentItem)objOL
        .CreateItem
            (Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem);
objAppt.Start = startTime;//datetime
objAppt.End = endTime;//datetime
objAppt.Subject = subject;
objAppt.Body = body;
objAppt.Location = location;
objAppt.MeetingStatus 
    = Microsoft.Office.Interop.Outlook.OlMeetingStatus.olMeeting;
objAppt.RequiredAttendees = "test@test.com";
objAppt.Send();
objAppt = null;
objOL = null;

4 个答案:

答案 0 :(得分:2)

是的,因为casperOne说我不会在服务器上使用outlook。我会使用CDO或RDO(redemeption)。甚至使用vcal并在system.Net.Mail上发送vcal。

<强>更新 看看http://www.dimastr.com/redemption/rdo/RDOAppointmenItem.htm

告诉你如何使用RDO疯狂地做你想做的事。您也可以使用CDO执行相同的操作。查看CDOLive.com 您必须构建一个登录详细信息,因为您在没有Outlook配置文件的服务器上(如果您删除了那个已经存在的那个),那就是

答案 1 :(得分:0)

很简单,你不应该这样做。由于Office具有线程(和桌面会话)要求,因此不建议您在服务器环境中运行Office。

您是否尝试在Exchange服务器上执行此操作?如果是这样,那么我会直接与Exchange服务器交互(也许使用WebDAV?)。

如果没有与Exchange连接,请查看标题以获取活动邀请。邀请函应该只是带有自定义标题信息的常规电子邮件。

答案 2 :(得分:0)

我想您无法从IIS应用程序使用Outlook的原因是因为IIS应用程序运行的当前用户没有关联的Outlook配置文件。

因此,您可以实例化Outlook对象并设置其属性,直到需要特定于配置文件的功能,例如Send()命令,该命令将外发邮件存储在用户的/配置文件(不存在的)pst文件中。 / p>

答案 3 :(得分:0)

请勿使用Outlook自动化执行此操作。

直接从马的嘴里出来:

  

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

     

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

http://support.microsoft.com/kb/257757

检查Outlook在执行此作业时发送的电子邮件标头,以确定如何完成此操作,并使用标准的.NET SmtpClient来模拟它。