Is there an OOB way to send a single email campaign to recipients in their local timezones vs. sending out a single blast? If not, does anybody have thoughts on how to approach this? Thanks
In short, there is No Out-of-the-Box method for sending a Regular Dispatch of EXM messages in bulk and have the message actually send at the Contact's local time for Dispatch.
To elaborate on this, regardless of whether you are using CustomSMTP or EmailCloud delivery service provider, each provider still uses SMTP (and not API) for the dispatching of messages. The timing of that is kept only at the CM's timezone and all messages are sent in bulk at the same time when doing a regular dispatch.
Thinking Outside the Box
You could create a List Manager Segmented List for each timezone that you want to dispatch to. Then subsequently create a separate EXM Regular Dispatch and manually offset the dispatch time. This puts the onus on the marketer, and is admittedly a lot of duplication, but does solve the business requirement.
The more significant possibility is to create a custom DispatchTask that will delay the send for the users until their designsted local time. This is a heavy lift becaue DispatchTask is a monumental effort to override and contains some
internal methods that you can't overcome. However, this would also delay the time it takes for a full dispatch to actually complete.
The most significant and time consuming effort and customization is to completely rewrite the EmailCloud provider with SparkPost and have it use SparkPost API instead of SMTP, which allows you to specify when SparkPost should send the message. Warning, this is a rabbit hole that will consume your life.
You are asking about a feature of EXM that is not available out of the box. The nice thing about Sitecore is that with enough will, determination, and hammers, you can make it do anything you want. But is it worth it?