public void Purge(ChannelMessageHeader message) { var client = new ExchangeClient(Hostname, CredentialsProvider); var messageId = client.GetMessageId(message.MessageNumber).ItemId; client.DeleteMessage(messageId); }
public void RemoveFromFolder(ChannelMessageHeader message, ChannelFolder folder) { var client = new ExchangeClient(Hostname, CredentialsProvider); var messageId = client.GetMessageId(message.MessageNumber).ItemId; client.DeleteMessage(messageId); }
public void MarkUnread(ChannelMessageHeader message) { var client = new ExchangeClient(Hostname, CredentialsProvider); var messageId = client.GetMessageId(message.MessageNumber).ItemId; client.SetMessageReadState(messageId, false); }
public void MoveToFolder(ChannelMessageHeader message, ChannelFolder folder) { var client = new ExchangeClient(Hostname, CredentialsProvider); var messageId = client.GetMessageId(message.MessageNumber).ItemId; client.MoveMessageToFolder(messageId, folder.FolderId); }
public IEnumerable <ChannelMessage> GetMessage(ChannelMessageHeader header) { var client = new ExchangeClient(Hostname, CredentialsProvider); ChannelMessage message = new ChannelMessage(); MessageType inboxItem = client.GetMessage(header.MessageNumber); // Now the message Body is there. BodyType messageBody = inboxItem.Body; message.Size = header.Size; message.MessageNumber = header.MessageNumber; message.MessageIdentifier = header.MessageIdentifier; message.Context = header.Context; message.From = new SourceAddress(inboxItem.From.Item.EmailAddress, inboxItem.From.Item.Name); if (inboxItem.ToRecipients != null) { foreach (var toRecipient in inboxItem.ToRecipients) { message.To.Add(new SourceAddress(toRecipient.EmailAddress, toRecipient.Name)); } } if (inboxItem.CcRecipients != null) { foreach (var ccRecipient in inboxItem.CcRecipients) { message.CC.Add(new SourceAddress(ccRecipient.EmailAddress, ccRecipient.Name)); } } if (inboxItem.BccRecipients != null) { foreach (var bccRecipient in inboxItem.BccRecipients) { message.BCC.Add(new SourceAddress(bccRecipient.EmailAddress, bccRecipient.Name)); } } message.InReplyTo = inboxItem.InReplyTo; message.Metadata = header.Metadata; message.IsRead = inboxItem.IsRead; message.BodyHtml = messageBody.Value.ToStream(); message.DateReceived = header.DateReceived; if (inboxItem.Attachments != null) { foreach (AttachmentType exchAttachment in inboxItem.Attachments) { var fileAttachment = client.GetAttachment(exchAttachment.AttachmentId.Id); message.Attachments.Add(new ChannelAttachment { Filename = fileAttachment.Name, ContentType = ContentType.Attachment, ContentStream = new MemoryStream(fileAttachment.Content) }); } } yield return(message); }
public void MarkDeleted(ChannelMessageHeader message) { var trash = GetFolders().First(f => f.FolderType == ChannelFolderType.Trash); var client = new ExchangeClient(Hostname, CredentialsProvider); var messageId = client.GetMessageId(message.MessageNumber).ItemId; client.MoveMessageToFolder(messageId, trash.FolderId); }
public IEnumerable<ChannelMessageHeader> GetHeaders() { var client = new ExchangeClient(Hostname, CredentialsProvider); foreach (MessageType inboxItem in client.GetHeaders(folder).Reverse().Skip((int)StartIndex).Take((int)PageSize)) { var header = new ChannelMessageHeader { MessageNumber = inboxItem.ItemId.Id, MessageIdentifier = inboxItem.InternetMessageId, Context = inboxItem.Subject, // Not sending size because exchange changes can the size due // to user actions usch as change priority. //Size = inboxItem.Size, DateReceived = inboxItem.DateTimeReceived, IsRead = inboxItem.IsRead, // Not processing IsStarred because somebody could send you an // email with importance: high and would end up getting starred; // feature just asking for abuse :-) //IsStarred = inboxItem.Importance == ImportanceChoicesType.High, }; yield return header; } }
public void SetStarred(ChannelMessageHeader message, bool starred) { var client = new ExchangeClient(Hostname, CredentialsProvider); var messageId = client.GetMessageId(message.MessageNumber).ItemId; client.SetMessageImportance(messageId, starred); }
public IEnumerable<ChannelContact> GetContacts() { var client = new ExchangeClient(Hostname, CredentialsProvider); foreach (var contactItem in client.GetContacts()) { if (contactItem.EmailAddresses == null || contactItem.EmailAddresses.Length == 0) { Logger.Warn("Contact {0} had no email address, ignoring", LogSource.Sync, contactItem.DisplayName); continue; } var contact = new ChannelContact(); contact.Profile.ChannelProfileKey = contactItem.ItemId.Id; contact.Profile.SourceAddress = new SourceAddress(contactItem.EmailAddresses[0].Value, contactItem.DisplayName); contact.Person.Lastname = contactItem.Surname; contact.Person.Firstname = contactItem.GivenName; if (contactItem.BirthdaySpecified) contact.Person.DateOfBirth = contactItem.Birthday; contact.Profile.ScreenName = contactItem.Nickname; contact.Profile.Title = contactItem.JobTitle; contact.Profile.ScreenName = contactItem.DisplayName; contact.Profile.CompanyName = contactItem.CompanyName; if (contactItem.PhysicalAddresses.Length > 0) { contact.Profile.Street = contactItem.PhysicalAddresses[0].Street; contact.Profile.ZipCode = contactItem.PhysicalAddresses[0].PostalCode; contact.Profile.City = contactItem.PhysicalAddresses[0].City; contact.Profile.Country = contactItem.PhysicalAddresses[0].CountryOrRegion; } yield return contact; } }
public IEnumerable<ChannelFolder> GetFolders() { var client = new ExchangeClient(Hostname, CredentialsProvider); // inbox var inbox = client.GetFolder(DistinguishedFolderIdNameType.inbox); folders.Add(new ChannelFolder(inbox.FolderId.Id, inbox.DisplayName, ChannelFolderType.Inbox)); folders.AddRange(GetChildFolders(client, inbox.FolderId.Id, ChannelFolderType.Label)); // sent items var sent = client.GetFolder(DistinguishedFolderIdNameType.sentitems); folders.Add(new ChannelFolder(sent.FolderId.Id, sent.DisplayName, ChannelFolderType.SentItems)); folders.AddRange(GetChildFolders(client, sent.FolderId.Id, ChannelFolderType.SentItems)); // trash var trash = client.GetFolder(DistinguishedFolderIdNameType.deleteditems); folders.Add(new ChannelFolder(trash.FolderId.Id, trash.DisplayName, ChannelFolderType.Trash)); // spam var spam = client.GetFolder(DistinguishedFolderIdNameType.junkemail); folders.Add(new ChannelFolder(spam.FolderId.Id, spam.DisplayName, ChannelFolderType.Spam)); return folders; }
public ChannelFolder CreateFolder(string folderName) { var client = new ExchangeClient(Hostname, CredentialsProvider); var folderId = client.CreateFolder(folderName, folders.First(f => f.FolderType == ChannelFolderType.Inbox).FolderId); var newFolder = new ChannelFolder(folderId, folderName, ChannelFolderType.Label); folders.Add(newFolder); return newFolder; }
public void AddLabel(ChannelMessageHeader message, string labelname) { var client = new ExchangeClient(Hostname, CredentialsProvider); var messageId = client.GetMessageId(message.MessageNumber).ItemId; client.CopyMessageToFolder(messageId, folders.First(f => f.Name.ToLower() == labelname.ToLower()).FolderId); }
public long GetNumberOfItems() { var client = new ExchangeClient(Hostname, CredentialsProvider); return(client.GetNrItemsInFolder(folder)); }
public void RemoveLabel(string messagenumber, string labelname) { var client = new ExchangeClient(Hostname, CredentialsProvider); var messageId = client.GetMessageId(messagenumber).ItemId; client.DeleteMessage(messageId); }
public IEnumerable<ChannelMessage> GetMessage(ChannelMessageHeader header) { var client = new ExchangeClient(Hostname, CredentialsProvider); ChannelMessage message = new ChannelMessage(); MessageType inboxItem = client.GetMessage(header.MessageNumber); // Now the message Body is there. BodyType messageBody = inboxItem.Body; message.Size = header.Size; message.MessageNumber = header.MessageNumber; message.MessageIdentifier = header.MessageIdentifier; message.Context = header.Context; message.From = new SourceAddress(inboxItem.From.Item.EmailAddress, inboxItem.From.Item.Name); if (inboxItem.ToRecipients != null) foreach (var toRecipient in inboxItem.ToRecipients) message.To.Add(new SourceAddress(toRecipient.EmailAddress, toRecipient.Name)); if (inboxItem.CcRecipients != null) foreach (var ccRecipient in inboxItem.CcRecipients) message.CC.Add(new SourceAddress(ccRecipient.EmailAddress, ccRecipient.Name)); if (inboxItem.BccRecipients != null) foreach (var bccRecipient in inboxItem.BccRecipients) message.BCC.Add(new SourceAddress(bccRecipient.EmailAddress, bccRecipient.Name)); message.InReplyTo = inboxItem.InReplyTo; message.Metadata = header.Metadata; message.IsRead = inboxItem.IsRead; message.BodyHtml = messageBody.Value.ToStream(); message.DateReceived = header.DateReceived; if (inboxItem.Attachments != null) { foreach (AttachmentType exchAttachment in inboxItem.Attachments) { var fileAttachment = client.GetAttachment(exchAttachment.AttachmentId.Id); message.Attachments.Add(new ChannelAttachment { Filename = fileAttachment.Name, ContentType = ContentType.Attachment, ContentStream = new MemoryStream(fileAttachment.Content) }); } } yield return message; }
public void Send(ChannelMessage message) { var client = new ExchangeClient(Hostname, CredentialsProvider); var messageId = client.SaveMessage(message); // Upload attachments if (message.Attachments.Count > 0) client.SaveAttachments(messageId, message); // Refresh and send message by message-id client.SendMessage(client.GetMessageId(messageId.Id).ItemId); }
public long GetNumberOfItems() { var client = new ExchangeClient(Hostname, CredentialsProvider); return client.GetNrItemsInFolder(folder); }
IEnumerable<ChannelFolder> GetChildFolders(ExchangeClient client, string folderId, ChannelFolderType folderType) { var childFolders = client.FindAllFolders(folderId); return childFolders.Select(f => new ChannelFolder(f.FolderId.Id, f.DisplayName, folderType)); }
IEnumerable <ChannelFolder> GetChildFolders(ExchangeClient client, string folderId, ChannelFolderType folderType) { var childFolders = client.FindAllFolders(folderId); return(childFolders.Select(f => new ChannelFolder(f.FolderId.Id, f.DisplayName, folderType))); }