会议日程

来源:互联网 发布:斯维尔绿色建筑软件 编辑:程序博客网 时间:2024/04/27 16:10

以下是方法:

#region 给本人插入会议日程

using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

using System.Net.Mail;
using System.Net.Mime;
using System.Net;
using System.Text;
using System.Data.SqlClient;
using System.IO;
using System.Xml;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;


public void CreateAppointment(ExchangeServiceBinding esb, string sub, string roommail, string location, DateTime datefrom, DateTime dateto,string bodyvalue)
{
// Create the appointment.
CalendarItemType appointment = new CalendarItemType();
// Add item properties to the appointment.
appointment.Body = new BodyType();
appointment.Body.BodyType1 = BodyTypeType.Text;
appointment.Body.Value = bodyvalue;//"Agenda Items.";
//appointment.Categories = new string[] { "Category1", "Category2" };
appointment.Importance = ImportanceChoicesType.High;
appointment.ImportanceSpecified = true;
appointment.ItemClass = "IPM.Appointment";
appointment.Subject = sub;
// Add an attendee

MailAddressCollection mc = GetrMailAddressList();
AttendeeType[] rAtt = new AttendeeType[mc.Count];
for (int ii = 0; ii < rAtt.Length; ii++)
{
EmailAddressType eat = new EmailAddressType();
eat.EmailAddress = mc[ii].Address;
eat.Name = mc[ii].DisplayName;
AttendeeType att = new AttendeeType();
att.Mailbox = eat;
rAtt[ii] = att;
}
//EmailAddressType eat1 = new EmailAddressType();
//eat1.EmailAddress = "第一个与会者邮箱地址";
//eat1.Name = "姓名";
//AttendeeType at1 = new AttendeeType();
//at1.Mailbox = eat1;

//EmailAddressType eat2 = new EmailAddressType();
//eat2.EmailAddress = "第一二个与会者邮箱地址";
//eat2.Name = "姓名";
//AttendeeType at2 = new AttendeeType();
//at2.Mailbox = eat2;

//AttendeeType[] rAtt = new AttendeeType[2];
//rAtt[0] = at1;
//rAtt[1] = at2;
appointment.RequiredAttendees = rAtt;

//add meeting room attendee
EmailAddressType meetingRoom = new EmailAddressType();
meetingRoom.EmailAddress = roommail ;// "会议室邮箱地址";
meetingRoom.Name = location ;
AttendeeType meetingType = new AttendeeType();
meetingType.Mailbox = meetingRoom;
AttendeeType[] meetingTypeList = new AttendeeType[1];
meetingTypeList[0] = meetingType;
appointment.Resources = meetingTypeList;
appointment.Location = location;
// Add calendar properties to the appointment.
appointment.Start = datefrom;
appointment.StartSpecified = true;
appointment.End = dateto;
appointment.EndSpecified = true;

// Identify the destination folder that will contain the appointment.
DistinguishedFolderIdType folder = new DistinguishedFolderIdType();
folder.Id = DistinguishedFolderIdNameType.calendar;

// Create the array of items that will contain the appointment.
NonEmptyArrayOfAllItemsType arrayOfItems = new NonEmptyArrayOfAllItemsType();
arrayOfItems.Items = new ItemType[1];

// Add the appointment to the array of items.
arrayOfItems.Items[0] = appointment;

// Create the CreateItem request.
CreateItemType createItemRequest = new CreateItemType();
// The SendMeetingInvitations attribute is required for calendar items.
//createItemRequest.SendMeetingInvitations = CalendarItemCreateOrDeleteOperationType.SendToNone;
createItemRequest.SendMeetingInvitations = CalendarItemCreateOrDeleteOperationType.SendToAllAndSaveCopy;
createItemRequest.SendMeetingInvitationsSpecified = true;
// Add the destination folder to the CreateItem request.
createItemRequest.SavedItemFolderId = new TargetFolderIdType();
createItemRequest.SavedItemFolderId.Item = folder;
// Add the items to the CreateItem request.
createItemRequest.Items = arrayOfItems;
try
{
// Send the request and get the response.
CreateItemResponseType createItemResponse = esb.CreateItem(createItemRequest);
// Get the response messages.
ResponseMessageType[] rmta = createItemResponse.ResponseMessages.Items;
foreach (ResponseMessageType rmt in rmta)
{
ArrayOfRealItemsType itemArray = ((ItemInfoResponseMessageType)rmt).Items;
ItemType[] items = itemArray.Items;

// Get the item identifier and change key for each item.
foreach (ItemType item in items)
{
Console.WriteLine("Item identifier: " + item.ItemId.Id);
Console.WriteLine("Item change key: " + item.ItemId.ChangeKey);
}
}
}
catch (Exception e)
{
Console.WriteLine("Error Message: " + e.Message);
}
}
//应答会议邀请:

//应答会议邀请
public static void AcceptItem(ExchangeServiceBinding esb, string meetingID)
{
// Create the request.
CreateItemType request = new CreateItemType();

// Set the message disposition on the request.
request.MessageDisposition = MessageDispositionType.SendAndSaveCopy;
request.MessageDispositionSpecified = true;

// Create the AcceptItem response object.
AcceptItemType acceptItem = new AcceptItemType();

// Identify the meeting request to accept.
acceptItem.ReferenceItemId = new ItemIdType();
acceptItem.ReferenceItemId.Id = meetingID;

// Add the AcceptItem response object to the request.
request.Items = new NonEmptyArrayOfAllItemsType();
request.Items.Items = new ItemType[1];
request.Items.Items[0] = acceptItem;
// Send the request and get the response.
CreateItemResponseType response = esb.CreateItem(request);

ArrayOfResponseMessagesType aormt = response.ResponseMessages;
ResponseMessageType[] rmta = aormt.Items;
foreach (ResponseMessageType rmt in rmta)
{
ItemInfoResponseMessageType iirmt = (rmt as ItemInfoResponseMessageType);
if (iirmt.ResponseClass == ResponseClassType.Success)
{
Console.WriteLine("Successfully accepted meeting");
}
}
}

private ExchangeServiceBinding esb;

public static ExchangeServiceBinding GetExchangeService(ExchangeSession session)
{
ExchangeServiceBinding esb = new ExchangeServiceBinding();

//esb.Credentials = session.GetNetworkCredential();
string ocsuser = System.Configuration.ConfigurationManager.AppSettings["OcsUser"];
string password = System.Configuration.ConfigurationManager.AppSettings["password"];
string domain = System.Configuration.ConfigurationManager.AppSettings["Domain"];
string ExchangeServer = System.Configuration.ConfigurationManager.AppSettings["ExchangeServer"];
esb.Credentials = session.GetNetCS(ocsuser, password, domain );
esb.Url = ExchangeServer; //session.Url;

ServicePointManager.ServerCertificateValidationCallback += CheckCert;

ExchangeImpersonationType imp = new ExchangeImpersonationType();
imp.ConnectingSID = new ConnectingSIDType { PrimarySmtpAddress = session.Impersonation };
esb.ExchangeImpersonation = imp;

FindItemType fit = new FindItemType();
fit.ItemShape = new ItemResponseShapeType { BaseShape = DefaultShapeNamesType.Default };
fit.ParentFolderIds = new DistinguishedFolderIdType[]
{
new DistinguishedFolderIdType{ Id = DistinguishedFolderIdNameType.calendar }
};

fit.Traversal = ItemQueryTraversalType.Shallow;

FindItemResponseType firt = esb.FindItem(fit);

fit.Traversal = ItemQueryTraversalType.Shallow;

return esb;
}

protected static bool CheckCert(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}

public void ExchangeOperation(string userMail)
{
//string unUserName = ConfigurationManager.AppSettings["UserName"];
//string pnPassWord = ConfigurationManager.AppSettings["Password"];
//string dnDomain = ConfigurationManager.AppSettings["Domain"];
//string url = ConfigurationManager.AppSettings["Url"];

//ExchangeImpersonationType Impersonation = new ExchangeImpersonationType();
//Impersonation.ConnectingSID = new ConnectingSIDType();

//esb = new ExchangeServiceBinding();
//esb.Credentials = new System.Net.NetworkCredential(unUserName, pnPassWord, dnDomain);
//esb.Url = url;
//esb.ExchangeImpersonation = Impersonation;

ExchangeSession m_Session = new ExchangeSession(userMail);
try
{
esb = GetExchangeService(m_Session);
}
catch (Exception ex)
{
string strError = ex.Message;
}
}
#endregion

这样使用

//给本人差日程 20110419解决自己发的会议邀请,自己的日历看不到日程的问题
ExchangeOperation(organigerEmail);//发起者的邮箱
CreateAppointment(esb, meeting.Subject, organigerEmail , roomAddress, startTime, endTime, content.Text.Trim() );

webconfig配置:

<!-- exchange配置-->
<add key="ExchangeServer" value="https://192.168.6.113/EWS/Exchange.asmx"/>
<add key="OcsUser" value="ocsuser"/>
<add key="Domain" value="sinooceanland.com"/>
<add key="password" value="password"/>