2011-09-16 6 views
0

GMail、mailgun、mailchimpなど などのさまざまな電子メールプロバイダを使用して、使用するライブラリを作成したいと考えています。これらのプロバイダは、現在、私は次のインタフェース ストラテジーなどを電子メールの送信に使用する方法

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 } 
} 

が今私の質問は、これらのインタフェースを実装するいくつかのクラスを定義しているなど、SMTP、HTTPポスト、
RESTベースのAPIを使用して電子メールを送信することができます

1)これはEmailLib、落とし穴、間違ったデザインを開発するための良いアプローチですか?私はDesignPatternウェイ

(ユーザ名などの、障害者、ポート、SSLかRESTなどなどのために、認証にこれらのクラスに多くのデータを置くことができますどのように

2)...

私は

が、それぞれがSMTPData(Gmailは

いくつかのMD5認証などを使用することができ、SSL、別のポートを必要とする独自のタイプを有することができる(等...、SMTPDataのような)IDATA考えると、これらのIDATAのための具体的なクラスを使用しますなど)

3)任意の提案は、この強力なライブラリを作るために歓迎されている(私は私のために)

後でそれを

ありがとう

+0

送信者の仕組みを使用して送信者を設計することができます。 ProviderBaseからEmailProviderBaseクラスを作成し、具体的な機能を実現する継承クラスを作成します。その後、.configから適切なプロバイダをロードするか、コードから直接ロードするEmailServicedClassを作成します。 – mishau

答えて

0

をオープンソースとして置く、私は必ずしも表示されませんISendStrategyとIEmailSenderを分割することを指摘してください。私はコードをどのように使用するのかを検討することをお勧めします。私はそれについて簡単に考えてみましたが、一つのインターフェースが十分であるべきだとお勧めします。おそらくこのようなもの...

public interface IEmailService { 
    public Send(IAuthenticationDetails details, IMessage message) 
} 

public class GMail : IEmailService { 
    public GMaily() { //... } 
    public Send(IAuthentication details, IMessage message) { 
     //... 
    } 
} 

public class AnotherClasss { 
    public void AMethodToSendEmail(...) {  
     // use factory or container to get instance of strategy 
     strategy.Send(details, message) 
    } 
} 
+0

だから、どのようにそれはこれらのインターフェースを使用してすることができます GmailやSMTPの設定を使用して電子メールを送信彼らのREST APIを でMailGUnを使用して電子メールを送信MailGunを使用して電子メールとそのSMTP設定 を送る 私は二つのことをしたいと言うとクラスを言います(おおよそ) Thanx – Jakkamma

関連する問題