Query message templates

To find a specific message template, you use theNewslettersManager class.

The following code examples find a message template with a specific ID, with the Native API.

Query message templates of type Plain text

  1. C#
     using System;
     using System.Collections.Generic;
     using System.Linq;
     using System.Text;
     using System.Threading.Tasks;
     using Telerik.Sitefinity.Modules.Newsletters;
     using Telerik.Sitefinity.Newsletters.Model;
     
     namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Modules.EmailCampaigns.MessageBodies
     {
         public partial class EmailCampaignsSnippets
         {
             public MessageBody QueryMessageBody(Guid id)
             {
                 NewslettersManager manager = NewslettersManager.GetManager();
                 MessageBody messageBody = manager.GetMessageBodies().Where(b => b.Id == id).SingleOrDefault();
     
                 return messageBody;
             }
         }
     }
     

First, you initialize the NewslettersManager. Then, you call GetMessageBodies to retrieve all message bodies and, finally, you filter the message bodies based on the Id property.

NOTE: You can filter by any of the MessageBody properties.

Query message templates using the GetMessageBody method of type Plain text

You can also use the GetMessageBody method of the manager class, in the following way:

  1. C#
     using System;
     using System.Collections.Generic;
     using System.Linq;
     using System.Text;
     using System.Threading.Tasks;
     using Telerik.Sitefinity.Modules.Newsletters;
     using Telerik.Sitefinity.Newsletters.Model;
     using Telerik.Sitefinity.SitefinityExceptions;
     
     namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Modules.EmailCampaigns.MessageBodies
     {
         public partial class EmailCampaignsSnippets
         {
             public MessageBody QueryMessageBodyById(Guid id)
             {
                 NewslettersManager manager = NewslettersManager.GetManager();
                 MessageBody messageBody = null;
     
                 try
                 {
                     messageBody = manager.GetMessageBody(id);
                 }
                 catch (ItemNotFoundException e)
                 {
                     //implement logic regarding the missing item.
                 }
     
                 return messageBody;
             }
         }
     }
     

NOTE: If no message template with the specified ID exists, the GetMessageBody method throws Telerik.Sitefinity.SitefinityExceptions.ItemNotFoundException exception.

Query message templates of type Like a web page
The following code shows how to use the Native API to get the message body of a message template with a specific ID, whose type is Like a web page:  ```C# using System; using System.Linq; using Telerik.Sitefinity.Modules.Newsletters; using Telerik.Sitefinity.Modules.Newsletters.Composition; using Telerik.Sitefinity.Modules.Pages; using Telerik.Sitefinity.Newsletters.Model; using Telerik.Sitefinity.Web.ResourceCombining;

namespace Telerik.Sitefinity.Documentation.CodeSnippets.DevGuide.SitefinityEssentials.Modules.EmailCampaigns.MessageBodies { public partial class EmailCampaignsSnippets { private string GetInternalPageSource(MessageBody messageBody, bool isPreview = false) { try { var render = new InMemoryPageRender(); //gets an instance of the PageManager var pageManager = PageManager.GetManager(); var node = pageManager.GetPageNode(messageBody.Id);

            //get the html rendering of the page
            var text = render.RenderPage(node, isPreview, isIndexMode: false);
            return text;
        }
        catch (Exception ex)
        {
            //exception handling goes here ..
        }
        return String.Empty;
    }

    public string QueryMessageBodyLikeAWebPage(Guid id)
    {
        //gets an instance of the NewslettersManager
        var newslettersManager = NewslettersManager.GetManager();
        MessageBody messageBody = new MessageBody();

        //queries the message body by Id
        messageBody = newslettersManager.GetMessageBodies().Where(b => b.Id == id).SingleOrDefault();

        //gets the rendered html of the page and returns email acceptable html
        return HtmlProcessor.ProcessHtml(GetInternalPageSource(messageBody));
    }   
}

}

To find a specific message template, you use the GetMessageBody method. Then, to get the rendered content of the page,  you use the `pageManager` instance. Finally, to strip all HTML and return email acceptable HTML, use the `ProcessHtml` method.
Want to learn more?
Enhance your Sitefinity skills by enrolling in free training sessions. Become Sitefinity certified through Progress Education Community to strengthen your professional credentials.
New to Sitefinity?