00001 using System;
00002 using System.Collections.Generic;
00003 using System.Text;
00004
00005 namespace MarekMailSystem2
00006 {
00007
00011 public class EmailManager : EmailSender
00012 {
00013
00014
00015
00016
00017 private IEmailTable ErrorTable;
00018 private IEmailTable TemplateTable;
00019 private IEmailSender EmailSender;
00020
00029 public EmailManager(IEmailTable ErrorTable, IEmailTable TemplateTable, IEmailSender EmailSender)
00030 : base()
00031 {
00032 this.ErrorTable = ErrorTable;
00033 this.TemplateTable = TemplateTable;
00034 this.EmailSender = EmailSender;
00035 }
00036
00040 public EmailManager() :this(
00041
00042
00043
00044 new DummyEmailTable("ErrorTable"),
00045 new TestTemplateEmailTable(),
00046 new SmtpEmailSender())
00047 {
00048
00049 }
00050
00051
00059 public EmailStatus SendSavedTemplate(string TemplateName, Dictionary<string, string> context)
00060 {
00061 Email template = TemplateTable.Load(TemplateName);
00062 SendTemplate(template, context);
00063 return template.SendingStatus;
00064 }
00065
00073 public EmailStatus SendSavedTemplate(string To, string TemplateName, Dictionary<string, string> context)
00074 {
00075 context["TO"] = To;
00076 Email template = TemplateTable.Load(TemplateName);
00077 SendTemplate(template, context);
00078 return template.SendingStatus;
00079 }
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00095 public override void Send(Email email)
00096 {
00097 EmailSender.Send(email);
00098
00099 if (email.SendingStatus.Status != StatusCode.Sent)
00100 ErrorTable.Save(email, "TODO: jaki tag?!");
00101 }
00102
00103 }
00104 }