Sitecore EXM for scheduled emails

This is a step-by-step approach for setting up Sitecore EXM for sending scheduled emails using an existing SMTP server. I have gone through this exercise myself and thought of documenting these steps, as instructions on the web otherwise are not very straightforward_._ 

To complete the installation process, after you have installed the EXM module packages, do the following. I have helped with typical settings needed when you configure an allowed SMTP server to send emails (without any assistance from Sitecore App Center):

1. Attach the Sitecore_Exm dispatch database to the SQL server. You can find the file in the Data folder or in the Website\temp\ECM folder

2. In the App_Config\ConnectionStrings.config file of your Sitecore solution, add the exm.dispatch SQL server connection string that will provide connectivity to the Sitecore_EXM dispatch database. For example:
<add name="exm.dispatch" connectionString="user id=user;password=password;DataSource=(server);Database=Sitecore_EXM" />

3. Run Sitecore.EmailExperienceManager.sql for the reporting database of your instance. The file is available in the Data folder.

4. In the \Website\App_Config\Include\Sitecore.Analytics.Tracking.config file, ensure the value of the Analytics.ClusterName setting is set to your website host name.

5. Use the Smart Publish option to publish your website.

6. On first launch, click on "Email Experience Manager" from Sitecore launchpad and go to "Dashboard" and click on "Default Settings" (top right). Make sure the Base URL value is like "http://[your website host name]". You must also configure the "From email" (typically your SMTP user name) as required by your SMTP server settings. These would be the EXM default settings to create a manager root.

7. In the file "\Website\App_Config\Include\EmailExperience\Sitecore.EmailExperience.ContentManagement.config" file, insert the values for SMTP, typically like
<setting name="SMTP.Server" value="[Your SMTP Server Name]" />
<setting name="SMTP.Port" value="[Your SMTP Port]" />
<setting name="SMTP.UserName" value="[Your SMTP User Name]" />
<setting name="SMTP.Password" value="[Your SMTP User Password]" />
<setting name="SMTP.AuthMethod" value="LOGIN" />
<setting name="SMTP.StartTLS" value="true" />

These are the steps needed when creating a message from an email template as an html file, that needs to sent at scheduled intervals:

1- Create/copy the email html file as "\Website\[your file].html". Make sure that the file contains absolute paths to links and images. In other words, use the protocols "http:"/"https:" to absolute locations. If your images are CDN based make sure to use te final CDN path for them. The usual link "View in browser" should then point to "http://[host name]/[your file name].html".

2- Click on "Create" after going to "Email Experience Manager" from Sitecore launchpad.

3- From "Create Message" section select "One-time message".

4- Under "Import", select the "html file" option.

5- You can give the desired message name (like I what I gave as "Rio Scheduled Newsletter Message")

6- Click on the button "browse for files"

7- Browse and select the file "\Website\[your file].html"

8- Click on "Create" button

9- Under "Recipients" tab in "Include Recipients", you can click on "File" to import list of emails (in a csv file) to whom you wish to send the scheduled message. Your csv file should have columns like "Email", "First Name" and "Last Name". Under each of these columns you can have the required values. 

10- You also need to add (even if empty) list into "Exclude Recipients". You can click on "Existing List" and select the "Rio unsubscribed list".

11- Under "Message" tab, enter the email "Subject" as desired.

12- You can then go to "Delivery" tab and select "Schedule Message Delivery" option to configure the desired date and time. 

13- Finally you can click on "Schedule" button to finalize this operation.