Websites and applications

Set up phpList to send emails and newsletters

Reviewed on 4 min read smtp entregabilidad

phpList lets you manage mailing lists and email campaigns. A working installation does not guarantee that messages reach the inbox: authentication, list quality, content, sending rate and reputation all play a part.

You can find it in Softaculous. Before a campaign, confirm the limit that applies to the domain and leave room for your usual email and other applications that use the same limit.

SMTP settings

Keep a copy of config/config.php. Change the existing options without duplicating constants. For an email account created on the same hosting that runs phpList, the local connection can be set up like this:

define('PHPMAILERHOST', 'localhost');
$phpmailer_smtpuser = 'boletines@tudominio.com';
$phpmailer_smtppassword = 'SUSTITUIR_POR_LA_CONTRASENA_DEL_BUZON';

Replace the account and password with the real ones. This local example does not work for a remote provider: in that case use its hostname, port, encryption and authentication. Do not disable certificate verification to work around a TLS error.

Protect the file and its copies, because they contain credentials. Do not enable public SMTP traces. The phpList reference configuration lets you look up the options for the installed version.

SPF and DKIM

Check the SPF and DKIM records in the authoritative DNS zone. If you send through a different provider, its servers must be authorised and the signature must match that sending. Do not create several separate SPF records.

Use a recognisable sender and check alignment with the DMARC policy. Authentication helps identify the sending, but it does not guarantee delivery or replace a list with valid subscriptions.

Batch settings

This example processes up to 800 messages per 3600-second period and adds a pause between messages:

define('MAILQUEUE_BATCH_SIZE', 800);
define('MAILQUEUE_BATCH_PERIOD', 3600);
define('MAILQUEUE_THROTTLE', 0.2);

800 is an example, not your plan's limit or permission to send bulk email. Set the batch size to the headroom available for all the domain's senders. A 0.2-second pause does not by itself limit sending to 800 per hour: the batch and period settings serve a different purpose.

The queue needs an active processing mechanism. Set up how it runs according to your phpList version and avoid simultaneous processes competing for the same campaign. Before automating it, test with a small list and check that batches resume as you expect.

Keep your contact list clean

Make it easy to unsubscribe and check that it really prevents future sends. Process bounces: a non-existent address needs a different action from a temporarily full mailbox. Do not retry permanent errors indefinitely or re-import unsubscribed contacts as active subscribers.

Check recipients, duplicates, links and content before each campaign. In a test, review delivery, the spam folder, authentication headers and rejection responses; phpList marking a message as sent only shows it was handed to the next system, not that the recipient read it.

Specialist services

For frequent campaigns or large volumes, a specialist service with unsubscribe, bounce, reputation and metrics management may be a better fit. You can connect it from your application without moving your website or your usual mailboxes.

Check terms, costs and compatibility before signing up. Do not spread a campaign across several accounts to get around the email service's limits.

You may also find useful

Something wrong or out of date? Tell us and we will review it.