public void Login(GXPOP3Session sessionInfo) { GXLogging.Debug(log, "Using OpenPOP POP3 Implementation"); _sessionInfo = sessionInfo; client = new Pop3Client(); try { client.Connect(Host, Port, sessionInfo.Secure == 1); client.Authenticate(UserName, Password, AuthenticationMethod.Auto); count = client.GetMessageCount(); uIds = client.GetMessageUids(); uIds.Insert(0, string.Empty); } catch (PopServerNotAvailableException e) { LogError("Login Error", "PopServer Not Available", MailConstants.MAIL_CantLogin, e); } catch (PopServerNotFoundException e) { LogError("Login Error", "Can't connect to host", MailConstants.MAIL_CantLogin, e); } catch (InvalidLoginException e) { LogError("Login Error", "Authentication error", MailConstants.MAIL_AuthenticationError, e); } catch (Exception e) { LogError("Login Error", e.Message, MailConstants.MAIL_CantLogin, e); } }
public string GetNextUID(GXPOP3Session session) { if (lastReadMessage == count) { LogDebug("No messages to receive", "No messages to receive", MailConstants.MAIL_NoMessages); return(""); } return(uIds[lastReadMessage + 1]); }
public void Skip(GXPOP3Session sessionInfo) { if (lastReadMessage == count) { LogError("No messages to receive", "No messages to receive", MailConstants.MAIL_NoMessages); return; } ++lastReadMessage; }
public void Logout(GXPOP3Session sessionInfo) { if (client != null) { client.Disconnect(); client.Dispose(); client = null; } }
public void Delete(GXPOP3Session sessionInfo) { try { client.DeleteMessage(lastReadMessage); } catch (PopServerException e) { LogError("Delete message error", e.Message, MailConstants.MAIL_ServerRepliedErr, e); } }
public void Receive(GXPOP3Session sessionInfo, GXMailMessage gxmessage) { if (client == null) { LogError("Login Error", "Must login", MailConstants.MAIL_CantLogin); return; } if (lastReadMessage == count) { LogDebug("No messages to receive", "No messages to receive", MailConstants.MAIL_NoMessages); return; } try { if (count > lastReadMessage) { Message m = null; try { m = client.GetMessage(++lastReadMessage); } catch (Exception e) { LogError("Receive message error", e.Message, MailConstants.MAIL_ServerRepliedErr, e); } if (m != null) { MailMessage msg; try { msg = m.ToMailMessage(); } catch (ArgumentException ae) { GXLogging.Error(log, "Receive message error " + ae.Message + " subject:" + m.Headers.Subject, ae); PropertyInfo subjectProp = m.Headers.GetType().GetProperty("Subject"); string subject = m.Headers.Subject; if (HasCROrLF(subject)) { subjectProp.SetValue(m.Headers, subject.Replace('\r', ' ').Replace('\n', ' ')); GXLogging.Warn(log, "Replaced CR and LF in subject " + m.Headers.Subject); } msg = m.ToMailMessage(); } using (msg) { gxmessage.From = new GXMailRecipient(msg.From.DisplayName, msg.From.Address); SetRecipient(gxmessage.To, msg.To); SetRecipient(gxmessage.CC, msg.CC); gxmessage.Subject = msg.Subject; if (msg.IsBodyHtml) { gxmessage.HTMLText = msg.Body; MessagePart plainText = m.FindFirstPlainTextVersion(); if (plainText != null) { gxmessage.Text += plainText.GetBodyAsText(); } } else { gxmessage.Text = msg.Body; } if (msg.ReplyToList != null && msg.ReplyToList.Count > 0) { SetRecipient(gxmessage.ReplyTo, msg.ReplyToList); } gxmessage.DateSent = m.Headers.DateSent; if (gxmessage.DateSent.Kind == DateTimeKind.Utc && GeneXus.Application.GxContext.Current != null) { gxmessage.DateSent = DateTimeUtil.FromTimeZone(m.Headers.DateSent, "Etc/UTC", GeneXus.Application.GxContext.Current); } gxmessage.DateReceived = GeneXus.Mail.Internals.Pop3.MailMessage.GetMessageDate(m.Headers.Date); AddHeader(gxmessage, "DispositionNotificationTo", m.Headers.DispositionNotificationTo.ToString()); ProcessMailAttachments(gxmessage, m.FindAllAttachments()); } } } }catch (Exception e) { LogError("Receive message error", e.Message, MailConstants.MAIL_ServerRepliedErr, e); } }