コード例 #1
0
        public virtual void SendEmail(EmailFormat format, string messageTypeID, string messageTypeCategory, string recipientEmail, Dictionary <string, string> tokenValues, string[] ccRecipients = null)
        {
            base.ExecuteMethod("PrepareAndSend", delegate()
            {
                IEmailTransport transport = this.IFoundation.SafeResolve <IEmailTransport>();
                if (transport != null)
                {
                    string templateKey = "EmailTemplate_" + format.ToString();
                    string subjectKey  = "EmailTemplate_" + format.ToString() + "_Subject";

                    string bodyTemplate = this.Cache.PerLifetime(templateKey, delegate()
                    {
                        return(this.API.Direct.GlobalSettings.GetValueOrDefault(templateKey, ""));
                    });
                    string subjectTemplate = this.Cache.PerLifetime(subjectKey, delegate()
                    {
                        return(this.API.Direct.GlobalSettings.GetValueOrDefault(subjectKey, ""));
                    });

                    if (string.IsNullOrEmpty(bodyTemplate) || string.IsNullOrEmpty(subjectTemplate))
                    {
                        this.SendAdminEmail("Flawed Configuration", "No Email Subject, Body Template found for: " + format.ToString());
                        return;
                    }

                    EmailRecipient recipient = new EmailRecipient(recipientEmail);
                    IEmail email             = transport.CreateEmail();
                    email.FromEmail          = this.Cache.PerLifetime("Email_FromEmail", delegate()
                    {
                        return(this.API.Direct.GlobalSettings.GetValueOrDefault("EmailFromEmail_Standard", "*****@*****.**"));
                    });
                    email.FromName = this.Cache.PerLifetime("Email_FromName", delegate()
                    {
                        return(this.API.Direct.GlobalSettings.GetValueOrDefault("EmailFromName_Standard", "Stencil"));
                    });
                    email.InternalMessageType = messageTypeCategory;
                    email.InternalTypeID      = messageTypeID;
                    email.HTMLBody            = this.ProcessTemplate(bodyTemplate, recipientEmail, tokenValues);
                    email.Subject             = this.ProcessTemplate(subjectTemplate, recipientEmail, tokenValues);
                    if (ccRecipients != null && ccRecipients.Length > 0)
                    {
                        if (email.ExtraData == null)
                        {
                            email.ExtraData = new Dictionary <string, string>();
                        }
                        email.ExtraData["cc"] = string.Join(";", ccRecipients);
                    }

                    if (string.IsNullOrEmpty(email.Subject))
                    {
                        email.Subject = "Information";
                    }
                    if (tokenValues.ContainsKey("FromName"))
                    {
                        email.FromName = tokenValues["FromName"];
                    }
                    if (tokenValues.ContainsKey("FromEmail"))
                    {
                        email.FromEmail = tokenValues["FromEmail"];
                    }

                    transport.SendEmail(email, recipient, false);
                }
            });
        }