HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/TDijk1/erp-apps.eu/wwwroot/App_Code/Emails/CustomEmailMessage.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using CMS.EmailEngine;
using CMS.CMSHelper;
using System.Net.Mail;
using CMS.GlobalHelper;
using CMS.MacroEngine;
using CMS.SiteProvider;

namespace Pux.Emails
{
    public class CustomEmailMessage
    {
        #region "Properties"

        EmailTemplateInfo mEmailTemplateInfo;

        string mFrom = null;
        public string From
        {
            get
            {
                if (mFrom == null)
                {
                    mFrom = mEmailTemplateInfo.TemplateFrom;
                }

                return mFrom;
            }
            set
            {
                mFrom = value;
            }
        }

        public string To { get; set; }

        string mCC = null;
        public string CC
        {
            get
            {
                if (mCC == null)
                {
                    mCC = mEmailTemplateInfo.TemplateCc;
                }

                return mCC;
            }
            set
            {
                mCC = value;
            }
        }

        string mBCC = null;
        public string BCC
        {
            get
            {
                if (mBCC == null)
                {
                    mBCC = mEmailTemplateInfo.TemplateBcc;
                }

                return mBCC;
            }
            set
            {
                mBCC = value;
            }
        }

        string mSubject = null;
        public string Subject
        {
            get
            {
                if (mSubject == null)
                {
                    mSubject = mEmailTemplateInfo.TemplateSubject;
                }

                return mSubject;
            }
            set
            {
                mSubject = value;
            }
        }

        private Attachment[] mAttachments = null;
        public Attachment[] Attachments
        {
            get
            {
                return mAttachments;
            }
            set
            {
                mAttachments = value;
            }
        }

        public object[,] SpecialMacros { get; set; }

        public string Language { get; set; }

        #endregion

        #region "Constructor"

        public CustomEmailMessage(string emailTemplateName)
        {
            EmailTemplateInfo eti = EmailTemplateProvider.GetEmailTemplate(emailTemplateName, SiteContext.CurrentSiteID);
            if (eti == null)
            {
                throw new Exception("Invalid template -- does not exists.");
            }

            mEmailTemplateInfo = eti;
        }

        public CustomEmailMessage(EmailTemplateInfo emailTemplateInfo)
        {
            mEmailTemplateInfo = emailTemplateInfo;
        }

        #endregion

        #region "Send"

        public void Send()
        {
            EmailMessage msg = new EmailMessage();

            if (string.IsNullOrEmpty(To))
            {
                To = CC;
                CC = "";
            }

            msg.EmailFormat = EmailFormatEnum.Both;
            msg.From = From;
            msg.Recipients = To;
            msg.Subject = Subject;
            msg.CcRecipients = CC;
            msg.BccRecipients = BCC;

            // clear "CC" field if it was used as a source for the "To" field
            mEmailTemplateInfo.TemplateCc = CC;

            if (Attachments != null)
            {
                for (int i = 0; i < Attachments.Length; i++)
                {
                    msg.Attachments.Insert(i, Attachments[i]);
                }
            }

            MacroResolver mcr = MacroResolver.GetInstance();
            if (!string.IsNullOrEmpty(Language))
            {
                mcr.Culture = Language;
            }

            if (SpecialMacros != null)
            {
                for (int i = 0; i < SpecialMacros.GetLength(0); i++)
                {
                    mcr.SetNamedSourceData(SpecialMacros[i, 0] as string, SpecialMacros[i, 1]);
                }
            }

            EmailSender.SendEmailWithTemplateText(SiteContext.CurrentSiteName, msg, mEmailTemplateInfo, mcr, false);
        }

        #endregion
    }
}