Query message templates

NEW TO SITEFINITY?

To find a specific message template, you use the NewslettersManager 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. 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. 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

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?

Increase your Sitefinity skills by signing up for our free trainings. Get Sitefinity-certified at Progress Education Community to boost your credentials.

Get started with Integration Hub | Sitefinity Cloud | Sitefinity SaaS

This free lesson teaches administrators, marketers, and other business professionals how to use the Integration hub service to create automated workflows between Sitefinity and other business systems.

Web Security for Sitefinity Administrators

This free lesson teaches administrators the basics about protecting yor Sitefinity instance and its sites from external threats. Configure HTTPS, SSL, allow lists for trusted sites, and cookie security, among others.

Foundations of Sitefinity ASP.NET Core Development

The free on-demand video course teaches developers how to use Sitefinity .NET Core and leverage its decoupled architecture and new way of coding against the platform.

Was this article helpful?