123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- using System;
- using System.Collections.Generic;
- namespace InABox.Mail
- {
- public abstract class CoreMailer<TFolderType, TSummaryType, TMessageType> : ICoreMailer, IDisposable where TFolderType : ICoreMailFolder
- where TSummaryType : ICoreMailSummary
- where TMessageType : ICoreMailMessage
- {
- #region Public Properties
- public string MailboxHost { get; set; }
- public int MailboxPort { get; set; }
- public string MailboxDomain { get; set; }
- public string MailboxUserName { get; set; }
- public string MailboxPassword { get; set; }
- public string SMTPHost { get; set; }
- public int SMTPPort { get; set; }
- public string SMTPDomain { get; set; }
- public string SMTPUserName { get; set; }
- public string SMTPPassword { get; set; }
- #endregion
- #region Public Methods
- public bool Connect()
- {
- return DoConnect();
- }
- public bool IsConnected => GetIsConnected();
- public ICoreMailMessage CreateMessage()
- {
- return DoCreateMessage();
- }
- public ICoreMailFolder FindFolder(ICoreMailFolder folder, string name)
- {
- return DoFindFolder((TFolderType)folder, name);
- }
- public ICoreMailFolder Inbox => GetInbox();
- public ICoreMailFolder SentItems => GetSentItems();
- public IEnumerable<ICoreMailMessage> GetMessages(ICoreMailFolder folder)
- {
- return DoGetMessages((TFolderType)folder) as IEnumerable<ICoreMailMessage>;
- }
- public ICoreMailMessage GetMessage(ICoreMailFolder folder, string id)
- {
- return DoGetMessage((TFolderType)folder, id);
- }
- public IEnumerable<ICoreMailSummary> ListMessages(ICoreMailFolder folder, int min = 0, int max = int.MaxValue)
- {
- return DoListMessages((TFolderType)folder, min, max) as IEnumerable<ICoreMailSummary>;
- }
- public bool MoveMessage(ICoreMailMessage message, ICoreMailFolder to)
- {
- return DoMoveMessage((TMessageType)message, (TFolderType)to);
- }
- public bool SendMessage(ICoreMailMessage message)
- {
- return DoSendMessage((TMessageType)message);
- }
- public bool SaveDraft(ICoreMailMessage message)
- {
- return DoSaveDraft((TMessageType)message);
- }
- #endregion
- #region Setup / Teardown
- public CoreMailer()
- {
- Initialize();
- }
- protected abstract void Initialize();
- public abstract void Dispose();
- #endregion
- #region Protected/Abstract Methods
- protected abstract bool DoConnect();
- protected abstract bool GetIsConnected();
- protected abstract TFolderType DoFindFolder(TFolderType folder, string name);
- protected abstract TFolderType GetInbox();
- protected abstract TFolderType GetSentItems();
- protected abstract TMessageType DoGetMessage(TFolderType folder, string id);
- protected abstract IEnumerable<TMessageType> DoGetMessages(TFolderType folder);
- protected abstract IEnumerable<TSummaryType> DoListMessages(TFolderType folder, int min = 0, int max = int.MaxValue);
- protected abstract TMessageType DoCreateMessage();
- protected abstract bool DoMoveMessage(TMessageType message, TFolderType to);
- protected abstract bool DoSendMessage(TMessageType message);
- protected abstract bool DoSaveDraft(TMessageType message);
- #endregion
- }
- }
|