2013-03-04 4 views
1

해결할 수없는 약간의 문제가 있습니다. C#, Visual Studio 2010 및 Outlook 라이브러리를 사용하고있는 오류 페이지로 작업하고 있습니다. 내 프로젝트에서 다음 라이브러리를 추가했습니다. "Microsoft.Office.Interop.Outlook" Visual Studio에서 제공하는 서버를 사용하여 웹 사이트를 실행하면 페이지가 완벽하게 작동합니다. IIS를 통해 페이지를 실행하면 로깅됩니다. "다음 오류로 인해 CLSID가 {0006F03A-0000-0000-C000-000000000046} 인 구성 요소의 COM 클래스 팩터 리를 검색 할 수 없습니다 : 80070005 액세스가 거부되었습니다. (예외 HRESULT : 0x80070005 (E_ACCESSDENIED)). "IIS에서 Outlook 라이브러리를 실행하지 못했습니다.

왜 그런지 알 수 있습니까? 문제를 해결하려면 어떻게해야합니까?

나는 C#을 사용하여 Outlook 약속을 만들 내 서버의 폴더 중 하나에이 약속을 저장 한 후 이메일에 첨부 보낼

, 내가 그것을 어떻게 할 수 있습니까? 당신은 IIS 응용 프로그램에서 Outlook을 자동화하기 위해 노력하고있다처럼

using Microsoft.Office.Interop; 
using Outlook = Microsoft.Office.Interop.Outlook; 
using System.Net.Mail; 
Outlook.Application outlookApp = (Outlook.Application)new Outlook.Application(); 
Outlook.AppointmentItem appointment = (Outlook.AppointmentItem)outlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olAppointmentItem); 
appointment.Subject = subject; 
appointment.Body = comments; 
appointment.Location = location; 
appointment.StartUTC = dateInit; 
appointment.EndUTC = dateEnd; 
appointment.ReminderSet = true; 
appointment.ReminderMinutesBeforeStart = advideInMinutes; 
appointment.BusyStatus = Microsoft.Office.Interop.Outlook.OlBusyStatus.olBusy; 
string appointmentPath = "c:\\webroot\\appointment\\appointmentName.msg"; 
appointment.SaveAs(appointmentPath); 
MailMessage mail = new MailMessage(); 
mail.To.Add(new System.Net.Mail.MailAddress("[email protected]")); 
mail.From = new System.Net.Mail.MailAddress("[email protected]", "MyName", System.Text.Encoding.UTF8); 
mail.SubjectEncoding = System.Text.Encoding.UTF8; 
mail.BodyEncoding = System.Text.Encoding.UTF8; 
mail.IsBodyHtml = true; 
mail.Priority = MailPriority.Normal; 
Attachment appointmentAttahment = new Attachment(appointmentPath); 
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("authsmtp.mydomain.com"); 
smtp.Credentials = new System.Net.NetworkCredential(Settings.Items["[email protected]", "password"); 
smtp.EnableSsl = false; 
smtp.Send(mail); 
appointmentAttahment.Dispose(); 

답변

1

보이는 :

내 코드는 다음입니다. 이를 위해서는 IIS 서버에 Outlook을 설치해야합니다. 비록 당신이 그 일을 얻을 것이지만, 그것은 지원되는 시나리오가 아닙니다.

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

"마이크로 소프트 (ASP, ASP.NET, DCOM 및 NT를 포함한 모든 대화 형이 아닌 무인 클라이언트 응용 프로그램이나 구성 요소에서 Microsoft Office 응용 프로그램의 자동화를 현재 권장되지 않으며, 지원하지 않습니다 서비스), Office가이 환경에서 실행될 때 불안정한 동작 및/또는 교착 상태를 나타낼 수 있기 때문입니다. " http://msdn.microsoft.com/en-us/library/exchange/dd633661(v=exchg.80).aspx

:

당신이 Exchange 서버가 당신이 여기 Exchange Web Services (EWS)

를 사용할 수 있습니다 사용하고 있는지 제공 EWS 사용하여 약속을 만드는 방법의 한 예이다

관련 문제