Sandstorm.Newsletter
The project has been sponsored by Swisscom, and initiated by Web Essentials. Thanks for your support!, (*1)
This is a tool which adjusts Neos in a way such that it can be used to send Newsletters., (*2)
Is is comprised of two parts:, (*3)
- a Go Daemon which does the actual Mail-Sending
- a Neos package this package which provides the User Interface
This is a newsletter sending infrastructure based on Neos. The actual newsletter-sending is handled
through Redis and a Go-Daemon, which can be found at https://github.com/sandstorm/mailer-daemon., (*4)
Features
- Performant and distributed mail sending through SMTP or Mandrill
- All Newsletter content is manageable through Neos
- Allow to replace arbitrary content in the newsletter with custom recipient-specific fields.
- Recipient-specific fields can be previewed in the
Desktop
preview mode.
- Support for multiple languages
- Allowance to seggregate the recipient list arbitrarily to tightly control whom newsletters should be sent to, using the jq query language
- Custom receiver sources possible
- Supports Unsubscribe lists in a privacy-preserving manner, not storing email addresses but their hashes
- Parallel email sending possible by starting multiple Go daemons simultaneously
- Auto-Inline CSS style sheets for maximum compatibility
Non-Features
The following things are *not yet implemented, but might be implemented in further projects:, (*5)
- Sign Up for new Newsletters
Prerequisites
- Install the mailer sending daemon which is written in Go
- Install Redis
- Install jq and ensure it exists on the PATH.
Installation / Set Up
-
Install this package through packagist:, (*6)
cd path/to/your/NeosDistribution
composer require sandstorm/newsletter
-
Ensure you have the Routes included, so that means Configuration/Routes.yaml
should contain the following
before the Neos routes:, (*7)
-
name: 'Newsletter'
uriPattern: 'neos/newsletter/<NewsletterSubroutes>'
subRoutes:
'NewsletterSubroutes':
package: 'Sandstorm.Newsletter'
-
Create a neos page template, using the TypoScript object Sandstorm.Newsletter:NewsletterPage
.
Also, ensure to include the Sandstorm.Newsletter:SampleDataWidget
somewhere in your page., (*8)
As an example, you can use the following TypoScript snippet:, (*9)
page = Sandstorm.Newsletter:NewsletterPage
page.sampleDataWidget = Sandstorm.Newsletter:SampleDataWidget
Receiver Sources and Receiver Groups
Internally, the system uses files for representing receiver lists. Each line in a file represents a single receiver,
and is a JSON object containing arbitrary properties (where one must be at least the email address, of course)., (*10)
-
A receiver source is essentially one source for receivers. Currently, we support both line-by-line JSON and CSV files;
but you might want to create your own Receiver Source lateron., (*11)
-
If you use multiple languages, the receiver source also contains a rule how the lines are segregated into the different languages., (*12)
-
The receiver group is an additional subset of receivers inside a receiver source, so you could create a "male" or
"female" receiver source if you like., (*13)
Usage in Neos
-
First, go to the Newsletter Receiver Management module and create a new receiver source; in our example choose the type *CSV Upload**[]:, (*14)
-
Then, upload the Documentation/example.csv
file. It defines the fields firstName
, lastName
, email
, gender
and language
and contains just three receivers., (*15)
-
If you have a languages content dimension configured, set the correct filters; e.g:, (*16)
- German:
language == "de"
- French:
language == "fr"
- (others):
false
(as the input file does not contain these languages)
-
(optionally) create a receiver group for "Male", with the filter gender == "male"
, and vice versa for female
., (*17)
-
Now, in the Content module of Neos, create a new Document of type Newsletter
. In the inspector, first select a Receiver Group. Optionally define email subjects etc;
and create your content as you like., (*18)
-
If your content e.g. includes {firstName}
, this will be replaced with the actual first name of the email recipient. You can preview this by switching to the Desktop
mode
in preview central., (*19)
-
Enjoy!, (*20)
Getting Help
If you get stuck, feel free to contact @sebastian or @christoph.daehne in Slack at slack.neos.io., (*21)
License
This software is licensed as MIT., (*22)