Я хочу использовать различные почтовые провайдеры, такие как GMail, mailgun, mailchimp и т. Д., И создать библиотеку для использования.Эти провайдеры разрешают отправлять электронные письма, используя SMTP, HTTP Post,
API на основе REST и т. Д. В настоящее время я определил следующие интерфейсы
interface IEmailSendStrategy // how to send email like SMTP , REST , HTTP Post etc ??
{
void Send(IEmailSender sender);
}
interface IEmailSender // provider like GMail , mailchimp, mailgun
{
void SendEmail(ISendStrategy strategy, System.Net.Mail.Message message)
}
и некоторые классы, реализующие эти интерфейсы
class SMTPStrategy : IEmailSendStrategy
{
void Send(IEmailSender sender){ // code to send }
}
class GMailSender : IEmailSender
{
void SendMail(ISendStrategy strategy, System.net.Mail.Message message){ // code }
}
Теперь мой вопрос
1) Является ли это хорошим подходом для разработки EmailLib, каких-либо ошибок или неправильного дизайна здесь?
2) Как я могу поместить больше данных в эти классы в DesignPattern-Way
(например, имена пользователей, pwds, порты, SSL или нет, AUthentication для REST и т. Д. И т. Д. *
Я думал об IData и использую конкретные классы для этих IData (например, SMTPData,и т. д.)
, но у каждого может быть свой тип SMTPData (для gmail требуется SSL, другой порт, может использоваться
некоторая аутентификация MD5 и т. д. и т. д.)
3) Приветствуются любые предложения, чтобы сделать эту библиотеку надежной (позже я опубликую ее как открытый источник
)
Thanx