Configuration & set-up

In the package

  • admin: Contains the files that you (the administrator) will use to operate the application.
  • api: sample files with examples and documentation on using the various apis.
  • assets: this is where your newsletters images (and other files) are stored. The html editor has a file manager that enables you to upload and insert assets (images) in the email body.
  • attachments: this is the folder where your attachments are placed. The upload utility places the files you upload as attachments automatically in this folder.
  • data_files: contains csv, txt files for importing subscribers or saving exported files.
  • subscriber: contains the public pages that your subscribers use.
  • inc: contains the files with the necessary functions for the operation of nuevoMailer.
  • install: contains the files to create (or upgrade) your tables when installing. You should remove this folder after you have completed your installation.
  • The .htaccess file is optional but good to have. Its only purpose is to disallow directory browsing and indexing of your files and folders (Apache only).

Key concepts

  • The most basic entities in nuevoMailer are the subscriber and the newsletter.
    All other entities and activities are based on these two.
  • A subscriber is someone from whom you have at least an email address.
  • A newsletter is the content that you send.
  • A mailing list is a way of grouping your subscribers.
  • A campaign is the activity of sending a newsletter to subscribers.
  • Any newsletter can be send to any mailing list (or a combination of lists or to all subscribers).
  • Terms such as opt-in, sign-in, sign-up are equivalent. They mean that a subscriber registers to receive your newsletters.
  • Terms such as newsletter and email are used interchangeably. This is because a newsletter is actually delivered via email.
  • E-newsletter is an electronic newsletter: a newsletter that is delivered electronically. In the context of email marketing and throughout this guide, for simplicity we use just newsletter.
  • Email marketing is marketing done via emails. It is another channel of electronic marketing.

Basic configuration

Reading this page means that you have successfully installed nuevoMailer.
Now some basic, initial configuration is necessary to complete your set-up.
Menu > Tools > Configuration & settings
  • First you will update some basic settings.
  • Complete your General settings.
    You can leave certain values unchanged for now. But the installation URL is important for further testing.
  • Change your Encryption password. Use 8 alphanumeric characters. This password is used to encrypt emails in un-subscribe and other links. After changing this update immediately your administrator accounts.
  • Go to Menu > Tools > Administrator accounts and change your administrator account details.
    As soon as you change your administrator email, username and password, log out and login again with your new credentials.
    Tip: add a second administrator account that you will use only for the cron jobs.
    Tip: add yourself both as administrator and subscriber with the same email. In this way you can test newsletter personalization without sending a full campaign but just s single email.
  • Create an html newsletter and try to upload an image or an attachment.
    Menu > Newsletters > Html newsletters > Create new
    If you see the message "Upload failed" then you may want to give write permissions or chmod777 to these folders: assets, attachments, data_files.
    To verify your permissions, test with a small sized file first. Larger files may be blocked due to your php.ini settings.
    If you can upload a small file then your permissions are Ok.

Email sending

Menu > Tools > Configuration & settings: Sending emails
Under Sending emails define an Email sending method. If you choose SMTP open the SMTP servers window and add an SMTP server. This window is also accessible under Menu > Tools > SMTP servers.
You can learn more about the different sending methods here.
Learn how to configure your SMTP servers in the next paragraph
  • Verify that your email sending method works.
    Create a new html newsletter and send a single test email directly from the html editor. If you see an error or do not receive the email after a few minutes, adjust again at your sending method (or SMTP server).
  • After you have a working sending method create a mailing list with 1-3 emails of yours.
    Create and send a campaign to your test list.
    Go to the Summary report and verify that views & clicks are captured.
    If not, then check your Views and clicks tracking options in your Configuration & settings. Double check also the "installation URL" and repeat your test.
Sending with Amazon SES?
There are two ways to use Amazon SES. Either as an SMTP server or by using the "Amazon SES query api".
The performance is more or less equivalent. But since it depends on yours and your subscribers location it is better to test both and decide.
Attention: your Amazon SMTP credentials are different from your access key id and secret access key.

SMTP servers

Menu > Tools > SMTP servers
  • You can define as many smtp servers as needed. Only active smtp servers are used. Temporarily you may choose to de-activate a server instead of deleting it. At least one server should be set as -Preferred- and it will be used when sending single emails (welcome, goodbye etc). To test an smtp server set it as -Active- and -Preferred- and send a test newsletter from the newsletter form.
  • Continuous SMTP rotation / Load balancing
    When enabled each batch is spread evenly among the available SMTP servers. When not, SMTP servers rotate with every new batch.
  • SMTP anti-flood: close the smtp connection after sending X emails and pause for Y seconds.
    Some smtp servers may have a limit on the number of emails you can send during a single smtp connection.
    The purpose of smtp anti-flood is to close and reopen the smtp connection after sending a number of emails.
    Smtp anti-flood happens inside a batch. So the values you use should be considerably lower than the batch settings.
    Typical values may be:
    First consider your smtp provider requirements. They may have specific instructions for these values.
    Number of emails can be anything between 10-100 emails. The pause can be 5 seconds or more.
    You should set these values in relation to your batch settings.
    To disable smtp anti-flood use 0 for both values.
    Using smtp anti-flood improves your deliverability.
  • Throttling / Maximum send rate
    Especially useful when using Amazon Simple Email Services (SES).
    To de-activate/disable enter 0.
  • Available for All campaigns - Selected lists
    When you use custom list settings and you want to make sure this smtp server will only be used in campaigns to these lists select Selected lists.
  • When you change the availability of an smtp server from Selected lists to All campaigns it is automatically removed from the lists it was assigned to. The same happens when you delete it.
  • Custom headers (optional)
    Some SMTP providers may require you to add some custom email headers in your emails.
    You can add custom headers in this manner. One header per line and end with a semicolon ;
                
                Header-field-1 => value-1;
                
    Header-field-2 => value-2;
    X-MC-Track => clicks_textonly;
    X-Message-Info => value;
Using 3rd party SMTP services
nuevoMailer works with all major SMTP-relay service providers such as Mandrill, SendGrid, Mailgun, Amazon SES, Critsend,, AuthSMTP, Mailjet (and many others).

Sending in batches

Menu > Tools > Configuration & settings: Sending emails
  • When sending manually

    The pause (batch interval) is taken from your general configuration settings.
    In this case it works as an exact pause. You will see your pop-up window reload exactly after the pause.
    You can use any number of minutes for pause or 0 or fractions of a minute: 0.5.
  • When sending with cron

    You can use custom batch settings that apply only for this specific campaign/task.
    With cron, the pause (batch interval) works as a minimum safe distance between two batches.
    You can use 0 for pause and let the cron period regulate the timing (unless of course you have more specific requirements).
    A rough example:
    Assume your cron hits every 5 minutes. But for this campaign you want to have at least 10 minutes break before the next batch starts.
    So you use 10 minutes for pause. In your log file you may see lines similar to this:
    Task: 3-->2014-12-15 16:27:24-->Check-point-5.-->STOP. Time since last execution: 9 Batch pause: 600.0
    In other words: only 9 seconds elapsed since the last batch finished. But the pause is 10 min (600 secs). So it will stop now and it will check again with the next cron run.
  • Always use batches except perhaps for small campaigns like auto-responders (or recurring campaigns).
    Batches can help you improve your deliverability.
    Batches ease the load on the server especially when sending to large lists.
    In such cases using batches will actually result in faster sending.
  • Batches can help you conform with your host's quotas (the amount of emails you can send in a given time-frame).

Cron jobs


For both campaigns and auto-responders (v.4/5/6.x) curl -l -s http://www.domain.com/mailer/admin/_start.php?apiKey
For campaigns only (v.6.x) curl -l -s http://www.domain.com/mailer/admin/_start.php?apiKey_c
For auto-responders only (v.6.x) curl -l -s http://www.domain.com/mailer/admin/_start.php?apiKey_r
Trigger & transactional emails (v.5/6.x) curl -l -s http://www.domain.com/mailer/admin/_sendTr.php?apiKey
Bounce manager (v.4/5/6.x) curl -l -s http://www.domain.com/mailer/admin/_bmProcessCron.php?apiKey
Data source synchronization (v.4/5/6.x) curl -l -s http://www.domain.com/mailer/admin/dataSourceSync.php?apiKey_X
Birthday reminder (v.4/5/6.x) curl -l -s http://www.domain.com/mailer/admin/birthdayReminder.php?apiKey
List-Unsubscribe (v.4/5/6.x) curl -l -s http://www.domain.com/mailer/admin/_listUnsubProcess.php?apiKey
To reset the daily maximum limit in all campaigns (v.6.x) curl -l -s http://www.domain.com/mailer/admin/_reset.php?apiKey
Subscribe by email: read & process mailboxes (v.6.x) curl -l -s http://www.domain.com/mailer/admin/_optInByEmail.php?apiKey
  • Replace www.domain.com/mailer with your own installation URL.
  • Instead of curl -L -s you may use WGET -O /dev/null.
  • Replace apiKey with your own.
    You will find your api key in your administrator accounts page:
    Menu > Tools > Administrator accounts
  • When syncing a data source X is the ID of the data source you want to sync.
    You can see this ID in the drop-down menu where you select a data source.
  • Depending on your system set-up another cron variation can be this:
    php -q /var/www/domain_dir/mailer/admin/_start.php apiKey

    Note: in the above line there is no ? before the apiKey. Just a space.
  • Need help with timing syntax?
    You can refer here http://en.wikipedia.org/wiki/Crontab for details.
    You may also use this free service to create your cron command http://www.htmlbasix.com/crontab.shtml.
  • Remember: your apiKey is calculated using your administrator email and encryption password.
    If you change any of these two then you must get a new key.

Timing
  • For campaigns you will probably have the cron hit every 5 minutes or even less depending on your needs:
    */5 * * * * curl -l -s http://www.domain.com/mailer/admin/_start.php?apiKey_c
  • For auto-responders have the cron hit exactly every 5 minutes:
    */5 * * * * curl -l -s http://www.domain.com/mailer/admin/_start.php?apiKey_r
  • In case you use one cron job for both auto-responders and campaigns have the cron hit exactly every 5 minutes:
    */5 * * * * curl -l -s http://www.domain.com/mailer/admin/_start.php?apiKey
  • For triggered emails a 5 minute period is fine. The frequency should depend on:
    • The expected volume of your triggers. If for example you put a trigger on "Campaign view" and you have thousands of views then the _sendTr script should run very often. Even every minute.
    • This script processes the emails in batches. And it uses your general batch size defined at your settings page. if needed, you can hardcode the batch size to a number that suits you better.
    • However, since the purpose of trigger emails is to target subscribers on an individual and timely basis perhaps it is better to re-evaluate your trigger strategy and instead use a follow-up campaign.
  • The birthday reminder should run at least once a day.
  • Data source synchronization should be done before a campaign or have it run regularly one or more times per day.
  • The bounce manager should run periodically, even several times a day and especially before and after a campaign so that your lists are cleaned.

Bounce manager

Menu > Tools > Configuration & settings: Bounce manager settings
With the bounce manager you are opening and reading a mailbox. So you are interested in what is called incoming settings.
These are usually the same as the ones you use when setting-up an email account in your email client (Outlook, Thunderbird etc).
Here are the some popular settings that work in most cases.
  • For most servers: use ports 110 or 143 and for connection flags use /pop3/notls
  • Gmail: use port 993, server imap.gmail.com and for connection flags use /imap/ssl/novalidate-cert
  • Important: when you plan to use the bounce manager do not download the bounced emails from the server without leaving a copy at the server. They must be at the server so that the bounce manager can find them and process them.
Running the bounce manager
You can run the bounce manager manually or with a cron job.
  1. With a cron job. Refer here for details.
  2. Manually:
    Menu > Tools > Process bounced emails: Click here to process bounced emails
Note: the bounce manager does not automatically delete subscribers from your system. It simply updates the soft/hard bounce property for each. You can then use the related utilities to process these subscribers: delete them, suppress them or put them in another list (by doing an advanced search) etc.

Amazon SNS for bounces

When you send your campaigns using Amazon SES (smtp or api) then you must set-up Amazon simple notification services (SNS) in order to process the bounced emails.
Amazon overwrites your <bounce-to> email & settings and adds it's own Return-path header.
We explain here how you can set-up Amazon SNS.
  1. Grab your endpoint URL from nuevoMailer. Go Menu > Tools > Process bounced emails. At the bottom you see:
    The above URL is your Endpoint. Copy it from your own installation!. Replace apiKey with your own by going to Menu>Tools>Administrator accounts>View & edit.
    So you have your own Endpoint URL. Now go to Amazon and log in your account.
  2. Log in to https://console.aws.amazon.com/ with your credentials. Then search for the SNS service. You will see this screen:
  3. Click on Create topic:
  4. In this topic, click on Actions>Subscribe to a topic (or “Create subscription”). This is where you will enter your endpoint.
  5. The system will auto approve the pending verification. It may take a while. Click on Subscriptions to see it:
  6. Now go to the Amazon SES service (console). You will create Notifications for the domain but also for the individual email accounts that you have added and verified.
    Click on the domain name. Then click "Notifications".
    Then click “Edit Configuration”. Use these options that you see below and click “Save Config”.
  7. Repeat step 6 for each of your Amazon verified email accounts. Include/add also the email account that you direct bounces in nuevoMailer.
    Click on “Email addresses” then click on the email address and you will see the same screens as in step 6.

    Click again on "Notifications" and proceed as in the step 6.
  8. Test your integration
    Create a new list and add these email accounts:
    bounce@simulator.amazonses.com
    complaint@simulator.amazonses.com
    Send a campaign to this list. Then go Menu>Reports>View Opt-outs and reasons. You should see this:
  How nuevoMailer handles these bounces
    Permanent bounce
  • inserts into opt-Outs
  • suppresses subscriber
  • +1 hard for subscriber
    Soft bounce
  • +1 soft for subscriber
    Both above cases
  • update campaign bounces+1
    Complaint
  • inserts into opt-Outs
  • suppresses subscriber
  • updates campaign optedOut+1
The provided code is open source. So assuming you know what you are doing feel free to change the above logic to what you want.

"List-Unsubscribe" header

Menu > Tools > Configuration & settings: List-Unsubscribe header (optional)
  • The "List-Unsubscribe" header is optional but nice-to-have. At the moment it has limited and occasional support by Gmail and Hotmail.
  • This header appends an email address where one can reply and opt-out and/or a direct opt-out link. The ESP decides what to use.
  • This is not a substitute method for unsubscribing. It should not be considered as a replacement to your normal opt-out links that you must have in your newsletters.
  • If the email provider displays the opt-out link and the subscriber clicks it then it will function exactly as the opt-out link either as global or list opt-out.
  • If it shows an email address then the provider will send an email to this address. Therefore you must "process" this mailbox like you do with bounce manager.
  • You must set-up a cron job to process these emails as explained here.
Opt-out by email
Using the above logic and the same process a subscriber can opt-out by sending an email to your "List-Unsubscribe" email account with the word STOP in the subject. Like this: Example.
  • You can use the opt-out by email feature without using the "List-Unsubscribe" header.
  • But you must set-up the "List-Unsubscribe" mailbox and the cron job so that you can process these unsubscribe emails.
  • Using opt-out links in your newsletters is always the best and most direct method.
    But there are cases that you send emails or newsletters outside nuevoMailer. In these cases the opt-out by email is a great trick to use.

Localization for non-English speaking users

  • All users are strongly recommended to use utf8 character encoding which is a safe choice for all languages.
    The script you used to create your tables defines also the Global character set you must use in your configuration settings.
    So use an equivalent encoding: both in utf8 or latin1 with iso-8859-1/3.
  • Always define the character set at the newsletter level (with the same logic as above).
  • It is a good idea to define the character set for the landing pages & greeting emails (welcome, goodbye etc) by adding such a line in the html code:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">OR
                    <meta http-equiv="Content-Type" content="text/html; charset=iso-8858-1">
Translation
You can translate the administration panel into your own language. You will find already some language files which are in admin/includes/lang directory.
In addition, adding your own language involves editing the following files:
  • /admin/includes/languages.php
  • /admin/index.php
See how it is done with another language and replicate it. Remember that the language names and file names are case-sensitive.
To translate the subscriber pages open the file inc/languages.php where you see lines such as:
define("SUBACCOUNT_1", "Your Newsletter subscriptions");
Replicate an existing language block, adjust the $subLang variable and start translating.
Feel free to exchange your translated language files by sending us a copy of your translation.
 
 
© 2017 Designerfreesolutions
Visit nuevoMailer.com
Visit the Demo