public void Login(GXMailServiceSession sessionInfo) { if (String.IsNullOrEmpty(_userName) || String.IsNullOrEmpty(_password)) { throw new BadCredentialsException(); } _session = sessionInfo; UserData userConfig = new UserData() { EmailAddress = _userName, Password = _password, Version = _version }; if (!string.IsNullOrEmpty(sessionInfo.ServerUrl)) { userConfig.AutodiscoverUrl = new Uri(sessionInfo.ServerUrl); } try { _service = Service.ConnectToService(userConfig); UpdateMailCount(); } catch (Exception e) { HandleError(e, 3); _service = null; } }
public void GetMailMessage(GXMailServiceSession sessionInfo, string MsgId, bool dwnEntireMsg, GXMailMessage gxmessage) { if (_service == null) { HandleError(2); return; } EmailMessage msg = GetEmailWithId(MsgId); if (msg != null) { if (dwnEntireMsg) { FetchEntireMessage(msg, gxmessage); } else { gxmessage.MessageId = MsgId; gxmessage.Subject = msg.Subject; } } else { HandleError(7); } }
public void Skip(GXMailServiceSession sessionInfo) { if (_service == null) { HandleError(2); return; } lastReadMailidx++; }
public void Delete(GXMailServiceSession sessionInfo, GXMailMessage gxmessage) { if (_service == null) { HandleError(2); return; } EmailMessage msg = GetEmailWithId(gxmessage.MessageId); if (msg != null) { msg.Delete(DeleteMode.MoveToDeletedItems); } }
public string GetNextUID(GXMailServiceSession session) { if (_service == null) { HandleError(2); return string.Empty; } EmailMessage msg = GetEmailAtIndex(lastReadMailidx); if (msg != null) { return msg.InternetMessageId.ToString(); } return string.Empty; }
public short MarkAs(GXMailServiceSession sessionInfo, GXMailMessage gxmessage, bool isRead) { if (_service == null) { HandleError(2); return 0; } EmailMessage msg = GetEmailWithId(gxmessage.MessageId); if (msg != null) { msg.IsRead = isRead; msg.Update(ConflictResolutionMode.AutoResolve); return 0; } return 1; }
public void ChangeFolder(GXMailServiceSession sessionInfo, string folder) { if (_service == null) { HandleError(2); return; } if (string.IsNullOrEmpty(folder)) { _currentFolder = null; return; } try { _currentFolder = GetFolderByPath(folder); } catch (Exception) { HandleError(6); } }
public void Receive(GXMailServiceSession sessionInfo, GXMailMessage gxmessage) { if (_service == null) { HandleError(2); return; } if (lastReadMailidx == _lastMailCount) { HandleError(5); return; } if (_allMail == null || _lastMailCount == 0) //First Time { UpdateMailCount(); SearchFilter sf = null; if (_fetchOnlyNewMessages) { sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false)); } ItemView view = new ItemView(Math.Max(_lastMailCount,1)); _allMail = FindItemsCurrentFolder(sf, view); } EmailMessage msg; // Verify that the item is an email message. if (lastReadMailidx < _lastMailCount && _allMail.Items[lastReadMailidx] is EmailMessage) { msg = GetEmailAtIndex(lastReadMailidx); lastReadMailidx++; FetchEntireMessage(msg, gxmessage); } }
public void Send(GXMailServiceSession sessionInfo, GXMailMessage gxmessage) { if (_service == null) { HandleError(2); return; } bool anyError = false; string fromAddress = (!string.IsNullOrEmpty(gxmessage.From.Address)) ? gxmessage.From.Address : _userName; EmailMessage email = new EmailMessage(_service); email.From = new EmailAddress(gxmessage.From.Name, fromAddress); SetRecipient(email.ToRecipients, gxmessage.To); SetRecipient(email.CcRecipients, gxmessage.CC); SetRecipient(email.BccRecipients, gxmessage.BCC); SetRecipient(email.ReplyTo, gxmessage.ReplyTo); email.Subject = gxmessage.Subject; if (string.IsNullOrEmpty(gxmessage.HTMLText)) { email.Body = new MessageBody(BodyType.Text, gxmessage.Text); } else { email.Body = new MessageBody(BodyType.HTML, gxmessage.HTMLText); } foreach (var attach in gxmessage.Attachments) { string attachFilePath = attach.Trim(); if (Path.IsPathRooted(attachFilePath)) { attachFilePath = Path.Combine(_attachDir, attach); } try { email.Attachments.AddFileAttachment(attachFilePath); } catch (FileNotFoundException) { anyError = true; sessionInfo.HandleMailException(new GXMailException("Can't find " + attachFilePath, GXInternetConstants.MAIL_InvalidAttachment)); } catch (Exception e) { anyError = true; sessionInfo.HandleMailException(new GXMailException(e.Message, GXInternetConstants.MAIL_InvalidAttachment)); } } if (!anyError) { try { email.SendAndSaveCopy(WellKnownFolderName.SentItems); } catch (Exception e) { sessionInfo.HandleMailException(new GXMailException(e.Message, MailConstants.MAIL_MessageNotSent)); } } }
public void Logout(GXMailServiceSession sessionInfo) { _allMail = null; _service = null; }