Пример #1
0
        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;
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
 public void Skip(GXMailServiceSession sessionInfo)
 {
     if (_service == null)
     {
         HandleError(2);
         return;
     }
     lastReadMailidx++;
 }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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;
        }
Пример #6
0
        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;
        }
Пример #7
0
        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);
            }
        }
Пример #8
0
        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);
            }

        }
Пример #9
0
        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));
                }
            }
        }
Пример #10
0
 public void Logout(GXMailServiceSession sessionInfo)
 {
     _allMail = null;
     _service = null;
 }