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
-
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
MessageBodyproperties.
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:
-
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
GetMessageBodymethod throwsTelerik.Sitefinity.SitefinityExceptions.ItemNotFoundExceptionexception.
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.