Sitecore EXM 9.0.1 – Email from existing page not working

Sitecore EXM is a tool to use for creating Email Marketing Campaigns within Sitecore. Sitecore EXM brings number of advantages over widely used third party tools like MailChimp, ConstantContact etc. If you’re not sure of anything below:

  • What is Email Marketing?
  • How Sitecore EXM works?
  • What are the differences between Sitecore EXM and third party tools like MailChimp, ConstantContact?
  • Advantages of Sitecore EXM
  • SUGCON India 2018 happened recently in Bangalore –

Please look the sessions slide page of SUGCON India 2018 where i have answered all your queries above in my session Introduction to EXM and how Marketing Automation helps. Click here to directly download the slide for EXM.

Steps to create email campaign based on existing page?

This is one of the great feature Sitecore EXM provides us to create an email campaign based on existing page of your Sitecore website. This allows you to send the exactly same page or page based on different device to be sent to your desired recipients. You can follow below steps to create an email campaign based on existing page in your website. But before that, you required to install Sitecore 9 update – 1 (9.0.1). With which Sitecore EXM comes by default installed. 

Step 1


Click on Email Experience Manager icon on the launchpad. You will be able to see this application if you have installed it properly.

Step 2


You have option to create either Regular or Automated email campaign. Click on regular email campaign for this exercise.

Step 3



From the dialog box, you can select the template for your email campaign from available options. Click on Existing page template option for this exercise. You need to specify the name of the campaign in Name field and select the content page item by clicking on Existing page button on right side. Once you select the content item from the content tree dialog, you will see below wizard.

Step 4


Using this wizard, you can setup your email campaign based on the existing page in Sitecore. Really simple steps, nothing customization required to set this up. Click here to know more about different templates.

What is the problem here?

As we seen in above steps, creating an email campaign based on existing page is not a difficult task or does not require any customization/configuration. It worked fine for the home page which comes as part of default Sitecore Installation. But when i installed Habitat site and tried to create an email campaign based on one of page from Habitat site, it was giving me below error on creating an email campaign.


As per notification message, I first verified if this message is deleted or not. But the message is present in the draft listing.

I decided to check logs then. For Email Experience Manager, you need to see first Exm.log file for any error. If you don’t find anything there, you can check the default log file in that case. I found below error stack:


As per error message, there was some issue with GetMessageBody function. When i dig into the assembly Sitecore.Modules.EmailCampaign, GetWebPageMailSubject was getting Title and Content from page.

There might be possibilities of security restrictions on few items referenced on that page or some xConnect connection, but i was able to browse the page normally and using Postman, i was able to get the html response too.

So, i started removing each rendering on page and creating the email campaign, that was really a lengthy process. At the end i figure out that a Teaser component added to page was causing some issue. Teaser view rendering looks like below:


I found that the usage of Dictionary was causing the issue at line:
@Html.Sitecore().Dictionary(“/PageContent/Teaser/Read more”, “Read more 1”)

However, this is working fine when browsing from browser. I also tried generating same Url and headers which EXM does while making the request to get page content, but still it’s not working while it’s returning result with browser & Postman. I am investigating more on this thread why it’s causing issue only when doing a web request for EXM.

For now, if you have a page which is using dictionary and it’s causing the same issue, try using alternative options there for EXM.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s