Outlook互操作服务在Windows任务计划程序中不起作用 [英] Outlook interop service is not working in windows task scheduler
本文介绍了Outlook互操作服务在Windows任务计划程序中不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我开发了一个控制台应用程序来创建OUTLOOK会议请求。当我在Visual Studio中运行它时,它完美地工作。但是当我在任务计划程序中安排它时,它不起作用。它给了我波纹错误。
错误:操作不可用(HRESULT异常:0x800401E3(MK_E_UNAVAILABLE))
以下是我的代码。
public MeetingDVO sendOneTimeMeeting(MeetingDVO dvo)
{
log.Info( In side Send Onetime Meeting);
object outlookObject = null ;
Outlook.Application oApp = null ;
Outlook.AppointmentItem agendaMeeting = null ;
帐户acc = null ;
string status = string .Empty;
尝试
{
outlookObject = Marshal.GetActiveObject( < span class =code-string> Outlook.Application);
if (outlookObject!= null )
{
log.Info( Marshal Object Created);
oApp = new Outlook.Application();
}
其他
{
oApp = new Microsoft.Office.Interop.Outlook.Application();
}
if ( true )
{
log.Info( 创建outlook对象);
// oApp = new Outlook.Application();
// oApp = CreateOrAttachToOutlookApplication();
log.Info( 对象创建);
agendaMeeting =(Outlook.AppointmentItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem);
log.Info( agendaMeeting Object created);
acc = SetAccount(oApp);
log.Info( 创建帐户);
if (agendaMeeting!= null )
{
log。信息( 在账户IF);
Outlook.NameSpace nameSpace = oApp.GetNamespace( MAPI);
log.Info( 命名空间);
agendaMeeting.MeetingStatus = Microsoft.Office.Interop.Outlook.OlMeetingStatus.olMeeting;
agendaMeeting.Location = dvo.Location;
agendaMeeting.Subject = dvo.Subject;
agendaMeeting.Body = dvo.Body;
agendaMeeting.Start = dvo.TimeSlot;
agendaMeeting.Duration = dvo.Duration;
// agendaMeeting.RequiredAttendees =skoswattha@emaar.ae; KCornelio.dul@emaar.ae;
agendaMeeting.RequiredAttendees = skoswattha@emaar.ae;
// agendaMeeting.RequiredAttendees =skoswattha@emaar.ae;
// agendaMeeting.ForceUpdateToAllAttendees = true;
// agendaMeeting.ResponseRequested = true;
((Outlook._AppointmentItem)agendaMeeting).SendUsingAccount = acc;
((Outlook._AppointmentItem)agendaMeeting).Send();
dvo.EntryID = agendaMeeting.EntryID;
dvo.Remarks = MeetingSucess;
}
else
dvo.Remarks = MeetingError + : + 会议对象为空 跨度>;
}
}
catch (System.Exception ex)
{
log.Info(ex。 InnerException + :::::: MESSAGE ---- + ex.Message);
dvo.Remarks = MeetingError + : + ex.Message;
}
最后
{
oApp = null ;
agendaMeeting = null ;
acc = null ;
}
return dvo;
}
有什么建议吗?
解决方案
< blockquote>好吧,我可以告诉你错误信息,结合你的代码:
outlookObject = Marshal.GetActiveObject(Outlook.Application);
表示在调用时Outlook似乎没有运行。
I have developed a console application to create OUTLOOK meeting requests. It is perfectly working fine when Im running it in Visual Studio. But when I schedule it in the Task Scheduler, it does not work. It gives me the bellow error.
Error : Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))
below is my code.
public MeetingDVO sendOneTimeMeeting(MeetingDVO dvo)
{
log.Info("In side Send Onetime Meeting");
object outlookObject = null;
Outlook.Application oApp = null;
Outlook.AppointmentItem agendaMeeting = null;
Account acc = null;
string status = string.Empty;
try
{
outlookObject = Marshal.GetActiveObject("Outlook.Application");
if (outlookObject != null)
{
log.Info("Marshal Object Created");
oApp = new Outlook.Application();
}
else
{
oApp = new Microsoft.Office.Interop.Outlook.Application();
}
if (true)
{
log.Info("creating outlook Object");
//oApp = new Outlook.Application();
//oApp = CreateOrAttachToOutlookApplication();
log.Info("Object created");
agendaMeeting = (Outlook.AppointmentItem)oApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem);
log.Info(" agendaMeeting Object created");
acc = SetAccount(oApp);
log.Info(" Account created");
if (agendaMeeting != null)
{
log.Info(" in side Account IF");
Outlook.NameSpace nameSpace = oApp.GetNamespace("MAPI");
log.Info(" Namespace");
agendaMeeting.MeetingStatus = Microsoft.Office.Interop.Outlook.OlMeetingStatus.olMeeting;
agendaMeeting.Location = dvo.Location;
agendaMeeting.Subject = dvo.Subject;
agendaMeeting.Body = dvo.Body;
agendaMeeting.Start = dvo.TimeSlot;
agendaMeeting.Duration = dvo.Duration;
//agendaMeeting.RequiredAttendees = "skoswattha@emaar.ae;KCornelio.dul@emaar.ae";
agendaMeeting.RequiredAttendees = "skoswattha@emaar.ae";
//agendaMeeting.RequiredAttendees = "skoswattha@emaar.ae";
//agendaMeeting.ForceUpdateToAllAttendees = true;
//agendaMeeting.ResponseRequested = true;
((Outlook._AppointmentItem)agendaMeeting).SendUsingAccount = acc;
((Outlook._AppointmentItem)agendaMeeting).Send();
dvo.EntryID = agendaMeeting.EntryID;
dvo.Remarks = MeetingSucess;
}
else
dvo.Remarks = MeetingError + " : " + "Meeting Object is Null";
}
}
catch (System.Exception ex)
{
log.Info(ex.InnerException +":::::: MESSAGE----"+ex.Message);
dvo.Remarks = MeetingError + " : " + ex.Message;
}
finally
{
oApp = null;
agendaMeeting = null;
acc = null;
}
return dvo;
}
any suggestions?
解决方案
Well, I can tell you that the error message, combined with your code:
outlookObject = Marshal.GetActiveObject("Outlook.Application");
means that Outlook doesn't appear to be running at the time the call is made.
这篇关于Outlook互操作服务在Windows任务计划程序中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文