Troubleshooting marketing emails

Issues with email sending

If your contacts are not correctly receiving marketing emails, please check the following:

  • The emails are sent out using a scheduled task that is executed every 1 minute by default. You can check the status of the scheduled task in the Scheduled tasks application.

  • Go to Settings -> System -> Emails or Configuration -> SMTP servers and make sure your SMTP servers are configured correctly. See Configuring SMTP servers for details. You can try sending a test email on the Email tab of the System application.

  • Go to the Email queue application. You can find an error message for individual emails that failed to send. Email queue keeps attempting to send failed emails once a minute for the first hour. After you resolve the technical issue, you can resend all failed emails by clicking Resend all failed.

  • If your application is hosted on Microsoft Azure, emails may fail to send from Xperience due to SMTP connection restrictions on the side of Azure. To resolve such issues, read and follow the recommendations in the Troubleshoot outbound SMTP connectivity problems in Azure article.

  • Make sure you are using correct email addresses.

  • Make sure the emails are not being blocked by an anti-spam software.

  • Email debugging can be helpful when solving problems with marketing emails. To enable email debugging, add the following keys to the configuration/appSettings section of your project’s web.config file:

      <add key="CMSLogEmails" value="true"/>
      <add key="CMSDebugEmails" value="true"/>
    • CMSLogEmails – logs all sent emails to the ~/App_Data/logemails.log file. The log contains each email’s:

      • Timestamp, identifying when the email was sent
      • Recipients
      • Sender
      • Subject
      • Custom headers inserted via the Xperience API
      • Custom header encoding (UTF-8 by default)
    • CMSDebugEmails – disables sending of emails to the actual recipients. The system only logs emails into the event log. Helpful if you need to test the functionality, but do not want the emails to actually reach the recipients.

      • To view the event log, open the Event log application.
      • The emails are logged as Information type events.
      • The Event code column contains the recipient’s address.
      • The system randomly generates Sending failed for <recipient’s email address> errors to simulate sending errors.

Issues with marketing emails on MVC sites

You may encounter problems in the interactions between the Xperience administration application and the MVC live site application when working with marketing emails. See the dedicated sub-page:

Issues when sending marketing emails to a large number of recipients

Restricting logging of sent marketing emails

By default, the system logs an event log entry for every sent marketing email. When mailing out to a very large number of recipients, this may lead to a cluttered event log or even website performance problems.

You can disable logging of marketing email changes (including send events) by adding the following key to the /configuration/appSettings section of your project’s web.config file:

<add key="CMSLogNewsletterIssueEvents" value="false" />

Custom macros in sent marketing emails not resolving correctly

Custom macrosused in marketing emails may not resolve correctly if they take macros dependent on subscriber context as parameters. For example, if you’re using a custom macro that takes the Recipient.FirstName macro as an argument, you need to call the custom macro with the subscriber resolver:
{% CustomMacro(SubscriberFirstName)|(resolver)subscriber %}

Note that this inconsistency occurs only in sent emails, email previews resolve macros differently.

When sending emails, the system automatically converts relative paths to absolute URLs for values placed into href and src attributes of HTML elements. However, other relative paths remain unchanged (for example, links inside the background-image property of an inlined CSS style).

To manually convert relative paths to absolute URLs based on the email feed’s Base URL, use the EmailFeed.GetAbsoluteUrl(relativeLink) macro method.

{% EmailFeed.GetAbsoluteUrl("/graphics/image.png") %}