6

While doing email action for workflow on Sitecore 9 PaaS. I came around terms like Custom SMTP and Sitecore email cloud.

I need some inputs around Custom SMTP . I understand it is same what we do adding SMTP detail in web.config via patching enabling mail send functionality. Or it is something different?

I went through below doc link and could not make out clear distinction. It ask to change configuration to switch between providers. I want to understand how switching will impact SMTP configuration patch for server detail like port/username/pwd etc.

https://doc.sitecore.net/email_experience_manager/configuring_the_delivery_process/message_transfer_agent/the_sitecore_email_cloud_compared_to_the_custom_smtp

https://doc.sitecore.net/email_experience_manager/configuring_the_delivery_process/message_transfer_agent/use_a_custom_smtp_for_email_delivery

4

The difference between Sitecore Email Cloud Delivery and Custom SMTP are pretty simple. But to really understand why they exist, some background is needed.

What is a Mail Transit Provider and why do I need one?

At it's most basic component, the act of Sitecore (or any application really) to send email successfully, requires connection to some kind of outgoing SMTP (Simple Mail Transit Provider) service to do the actual dispatching of email.

SMTP's are heavily regulated because of the impact of sending SPAM messages. One area of concern is what's called Reputation management. It's the concept that if you want your emails to be delivered to the Inbox of your recipients and not to the Junk/Spam boxes, the reputation of your domain is incredibly important.

How do you manage Reputation?

It's rather quite simple in theory, but really difficult in practice. The core concept is making sure that you're only sending email to email addresses that have actively opted in to be mailed to. Opt-In can come in many different forms and some companies do a better job than others at making it clear that an action the user is taking is subscribing them to a process that will send emails to them.

However, when things go wrong, and there's a high number of bounces, high number of spam complaints, or high number of illicit tactics, spoofing etc occuring, it can place the actual SMTP server on to a publically distributed black list by IP address. When an SMTP server is placed on this list, it takes a manual action to remove it, and every SMTP server in the world will validate against the black list and deny the sender from sending any email through that SMTP server.

In cases where most companies are using 3rd party services for SMTP, those companies generally have controls in place to try and intervene before their own servers get blacklisted.

In cases where companies host their own SMTP server, if they aren't careful, the could end up on the black list.

DKIM and SPF are all ways that have come about as a way of validating the sender's domain and email server to ensure that the email server is acting correctly.

Sitecore's MTA Providers

Out of the box with Sitecore 9.0.1 as well as with EXM 3.4 and EXM 3.5, Sitecore ships with two MTA Providers:

  • Sitecore Email Cloud Delivery Service
  • Custom SMTP

Custom SMTP

This is the easy one. This is a Bring-Your-Own-SMTP concept. If anyone is familiar even in the slightest with sending email automatically, you have to have an SMTP server. Custom SMTP provides you default configurations for selecting a SMTP Server, Port, optional authentication, and other configurations.

The most common SMTP services being used with the Custom SMTP are services like:

  • SendGrid
  • Amazon SES SMTP
  • Mailgun
  • Postmark
  • Mandrill
  • AuthMailer

The Custom SMTP Provider with Sitecore has a few drawbacks. Because it's a generic SMTP provider, it doesn't gather bounces or spam complaints from the SMTP providers. So, you won't see that information come into EXM. There's also no global suppression list (controlled by the SMTP provider) for you to view, so you can't see the suppression list.

Sitecore Email Cloud Delivery Service

Sitecore Email Cloud Delivery Service or Sitecore Cloud EDS is Sitecore's subscription-based SMTP provider service. It's basically in competition with the other SMTP providers listed above but carries some unique differences.

For starters, Sitecore Email Cloud Delivery Service is specifically built (through Sparkpost) to deal with Reputation Management. There is a control panel that shows you the domains configured through Sitecore EDS and provides you all of the information you need to know to correctly setup your DKIM keys on your domain.

Additionally, the suppression list is automatically populated into the Sitecore EXM Management UI.

But the biggest bang for the buck is the built-in reporting that is gathered by Sitecore EDS. Bounces and Spam Complaints give you a clear view into the deliverability of your email distribution. The lower your deliverability is, the higher chances that your domain will be blacklisted.

Technically, when using Sitecore's Cloud EDS, there is NO SMTP configuration. Instead, the subscription is attached to your Sitecore license. The Subscription calls for X amount of mail messages to be delivered per month.

So what's the difference?

The biggest difference is whether you have a tolerance for managing email reputation on your own or paying a subscription service to do it. Sitecore heavily recommends using Sitecore Cloud EDS (and probably because they get money from it) but customers who don't use Sitecore Cloud EDS are much more likely to have deliverability issues if no one is actively monitoring it.

  • 1
    Quite informative for me, Thanks a lot @Pete-Navarra – FHN Apr 5 '18 at 17:40
  • Yeah, I wasn't 100% sure if you were asking for the differences between the two providers. While @jammykam's answer is more technically specific, I wanted to provide some context around what these providers are in case you were trying to understand why there are multiple providers in Sitecore. – Pete Navarra Apr 5 '18 at 17:45
3

The documents you have linked to explain the difference between Sitecore Email Cloud and Custom SMTP. At a basic level, both providers allow you to do the same thing which is to send some emails, but each has it's own features. Sitecore Email Cloud is a paid for service, whereas it is up to you which Custom SMTP service you use. The answer from @Vlad also describes how to switch between the providers in Sitecore 9.

If you are trying to configure the mail server in order to send emails using the default Email Workflow Action created using /sitecore/templates/System/Workflow/Email action then you do not need to worry about the Sitecore Email Cloud or Custom SMTP settings, and you should specify the SMTP details in the Mail server field of the Workflow Action.

Workflow Email SMTP

Those settings are more relevant for Email Experience Manager and anything which uses this module to send (mainly bulk) email.

The default Workflow Email implementation is Sitecore.Workflows.Simple.EmailAction in Sitecore.Kernel.dll and this sends email using the SmtpClient class. The implementation is very crude IMO, and you would better providing your own implementation allowing the use of an empty SmtpClient constructor to use the configuration settings from web.config.

Alternatively, you can use the Sitecore.MainUtil.SendMail(MailMessage message) helper which will allow you to set and use the MailMessage message, MailServerUserName, MailServerPassword and MailServerPort settings from the default Sitecore config. Both these are ideal for simple system messages and notifications (EXM is better for more complex emails and campaigns). These settings are NOT used by Sitecore Cloud Email or Custom SMTP which use their own configuration.

  • Thanks for detail explanation. Yeah I will be using for simple workflow email notification only. Let me patch mail server configuration and see it in action. – FHN Apr 4 '18 at 7:30
  • To be clear, if you are using Simple EmailAction then mail server details should be put into the Mail server field on the item, it does not use the settings from config (for some strange reason) – jammykam Apr 4 '18 at 13:37
  • Yeah I decompiled the class and found that it doesn't take any setting from config hence, Mailserver requiring userid and password we have to write our own class to get it done. – FHN Apr 5 '18 at 10:07
1

Starting from Sitecore 9 you have Rule Based Configuration. @JammyKam explained here very nice: https://jammykam.wordpress.com/2017/10/17/rules-based-configuration/

For EXM in web.config you define EDS role of the server using next configurations:

<!-- SUPPORTED EDS PROVIDERS     
                 Specify the Email Delivery provider that you want this server to use. 

The supported providers are:

                 CustomSmtp
                 EmailCloud
            -->
    <add key="eds:define" value="CustomSMTP" />

On the folder \App_Config\Sitecore\EmailExperience\ you have all configuration for EmailCloud(Sparkpost) and for CustomSmtp

For EmailCloud all the settings are defined in 3 files:

\App_Config\Sitecore\EmailExperience\Sitecore.EDS.Providers.SparkPost.config
\App_Config\Sitecore\EmailExperience\Sitecore.EDS.Providers.SparkPost.Sync.config  
\App_Config\Sitecore\EmailExperience\Sitecore.EDS.SparkPost.Client.config

For CustomSmtp all settings\properties are defined in the files:

\App_Config\Sitecore\EmailExperience\Sitecore.EDS.Providers.CustomSMTP.config
\App_Config\Sitecore\EmailExperience\Sitecore.EDS.Providers.CustomSMTP.Sync.config

If you add Eds:Role in the patch config file it should not affect any configuration for user/passwpord On the top of the patch config file for customSMTP configuration you need to have Eds role and server role like in below config :

<?xml version="1.0" encoding="utf-8" ?>
<!--
Purpose: This include file configures Email delivery service API.
-->
<configuration xmlns:role="http://www.sitecore.net/xmlconfig/role/" xmlns:eds="http://www.sitecore.net/xmlconfig/eds/" xmlns:exmEnabled="http://www.sitecore.net/xmlconfig/exmEnabled/">
    <sitecore exmEnabled:require="yes" role:require="Standalone or ContentManagement or DedicatedDispatch" eds:require="CustomSmtp">

Using yourhostname/sitecore/admin/showconfig.aspx you can see how new patch files are applied into your Sitecore solution.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.