我想使用各種電子郵件提供商如GMail,mailgun,mailchimp等 並創建一個庫來使用。這些提供商允許發送郵件使用SMTP,HTTP POST
基於REST的API等。目前我已經定義了以下接口如何使用策略和其他電子郵件發送
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路
(如用戶名,殘疾人士,港口,SSL與否,身份驗證REST等等...
我想到IData的和使用的具體類爲那些IData的(如SMTPData,等等。)
但每一個可能有它自己的類型SMTPData(Gmail的需要SSL,不同的端口,可以使用
一些MD5認證等等)
3)任何建議,歡迎,使這個強大的庫(我會把它作爲開源
以後)
感謝名單
你可以使用提供者機制來設計你的發件人。從ProviderBase創建一個類EmailProviderBase,然後創建能夠實現具體功能的繼承類。然後創建一個EmailServicedClass,它將從.config或直接從代碼加載適當的提供程序。 – mishau