On Mon, 30 May 2011 01:32:44 +0200, Daniel Gibson <metalcae...@gmail.com> wrote:

So if it's just "EmailLogEngine" or whatever and it's using SMTP,
changing it to use the SMTP-alternative....

It's just a wrong view on a whole conception. Log uses different KIND of targets: file, database(do you care which one??), mail (is it important which proto??), etc. 'Mail' is an abstraction of "something which can send message to the human". So... instead of making annoying set of classes for all known mail protocols, we use ONE mail class with appropriate constructors for all imaginable protocols. Say:

enum MailProto { SMTP, IMAP }

class EmailLogEngine : LogEngine
{
public this(MailProto type, string user, string psw, string host, int port = 0)
    {
        if (port == 0)
            switch(type) {
            case SMTP: port = 25; break;
            }

        // initialize mail server structures
    }

    override public void Write(string msg)
    {
        // send message, using appropriate proto
    }
}

Reply via email to