Stephen2

Sitefinity - Email Gadgetry

May 7th, 2014
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.61 KB | None | 0 0
  1.         /* EMAIL GADGETRY */
  2.         public static void SendEmailUsingSitefinityFromEmailTemplate(string emailTemplateFileName, Dictionary<string, string> mergeData, User user, string notificationProfile = "Default") {
  3.             SendEmailUsingSitefinityFromEmailTemplate(emailTemplateFileName, mergeData, EmailContact.AsList(user));
  4.         }
  5.  
  6.         public static void SendEmailUsingSitefinityFromEmailTemplate(string emailTemplateFileName, Dictionary<string, string> mergeData, string email, string firstName, string lastName, string notificationProfile = "Default") {
  7.             SendEmailUsingSitefinityFromEmailTemplate(emailTemplateFileName, mergeData, EmailContact.AsList(email, firstName, lastName));
  8.         }
  9.  
  10.         public static void SendEmailUsingSitefinityFromEmailTemplate(string emailTemplateFileName, Dictionary<string, string> mergeData, IEnumerable<EmailContact> emailContacts, string notificationProfile = "Default") {
  11.             var filePath = HttpContext.Current.Server.MapPath(string.Format("/Websilk/EmailTemplates/{0}.txt", emailTemplateFileName));
  12.             var fileLines = File.ReadAllLines(filePath).ToList();
  13.             var subject = fileLines[0];
  14.             fileLines.RemoveAt(0);
  15.             var bodyText = string.Join("\n", fileLines);
  16.             SendEmailUsingSitefinity(subject, bodyText, emailTemplateFileName, mergeData, emailContacts, notificationProfile);
  17.         }
  18.  
  19.         public static void SendEmailUsingSitefinity(string subject, string bodyText, string programmaticEmailName, Dictionary<string, string> mergeData, User user, string notificationProfile = "Default") {
  20.             SendEmailUsingSitefinity(subject, bodyText, programmaticEmailName, mergeData, EmailContact.AsList(user), notificationProfile);
  21.         }
  22.  
  23.         public static void SendEmailUsingSitefinity(string subject, string bodyText, string programmaticEmailName, Dictionary<string, string> mergeData, string email, string firstName, string lastName, string notificationProfile = "Default") {
  24.             SendEmailUsingSitefinity(subject, bodyText, programmaticEmailName, mergeData, EmailContact.AsList(email, firstName, lastName), notificationProfile);
  25.         }
  26.  
  27.         public static void SendEmailUsingSitefinity(string subject, string bodyText, string programmaticEmailName, Dictionary<string, string> mergeData, IEnumerable<EmailContact> emailContacts, string notificationProfile = "Default") {
  28.             var subscriberRequestProxies = emailContacts.Select(o => new SubscriberRequestProxy() {
  29.                 Email = o.Email,
  30.                 FirstName = o.FirstName,
  31.                 LastName = o.LastName
  32.             });
  33.  
  34.             var messageTemplateRequest = new MessageTemplateRequestProxy() {
  35.                 Subject = subject,
  36.                 PlainTextVersion = bodyText
  37.             };
  38.  
  39.             //if he body starts with the HTML element set BodyHtml
  40.             if(bodyText.StartsWith("<html>"))
  41.             {
  42.                 messageTemplateRequest.BodyHtml = bodyText;
  43.             }
  44.  
  45.             var messageJobRequest = new MessageJobRequestProxy() {
  46.                 MessageTemplate = messageTemplateRequest,
  47.                 Subscribers = subscriberRequestProxies,
  48.                 SenderProfileName = notificationProfile
  49.             };
  50.  
  51.             //Send to the Message Queue
  52.             var context = new ServiceContext("CustomEmail", programmaticEmailName);
  53.             SystemManager.GetNotificationService().SendMessage(context, messageJobRequest, mergeData);
  54.         }
  55.  
  56.         public class EmailContact {
  57.             public string Email { get; set; }
  58.             public string FirstName { get; set; }
  59.             public string LastName { get; set; }
  60.  
  61.             public EmailContact(string email, string firstName, string lastName) {
  62.                 Email = email;
  63.                 FirstName = firstName;
  64.                 LastName = lastName;
  65.             }
  66.  
  67.             public EmailContact(User user) {
  68.                 var sitefinityProfile = user.GetSitefinityProfile();
  69.                 Email = user.Email;
  70.                 FirstName = sitefinityProfile.FirstName;
  71.                 LastName = sitefinityProfile.LastName;
  72.             }
  73.  
  74.             public static List<EmailContact> AsList(string email, string firstName, string lastName) {
  75.                 return new List<EmailContact>() {
  76.                     new EmailContact(email, firstName, lastName)
  77.                 };
  78.             }
  79.  
  80.             public static List<EmailContact> AsList(User user) {
  81.                 return new List<EmailContact>() {
  82.                     new EmailContact(user)
  83.                 };
  84.             }
  85.         }
Advertisement
Add Comment
Please, Sign In to add comment