PrestaShop powers hundreds of thousands of European shops, but its default email transport is fundamentally unsuited to modern Gmail, Outlook, and Yahoo requirements. Out of the box, PrestaShop hands transactional messages to PHP's mail() function, which leaves the server on the shared web host's IP. The envelope sender is on a domain you do not control, SPF fails, DKIM is absent, and the message is treated as unauthenticated. The fix is straightforward: enable SMTP with a dedicated provider, set up three DNS records, then verify with a seed test before enabling customer sends.
If PrestaShop emails never arrive or land in Spam, swap Use PHP's mail() function for Set my own SMTP parameters in Advanced Parameters → Email, point it at Postmark / SendGrid / Brevo, and publish SPF + DKIM + DMARC for the From domain. That fixes 90 percent of PrestaShop deliverability complaints.
Why PrestaShop defaults fail deliverability
PrestaShop's Mail module offers three options: Never send emails, Use PHP's mail() function, and Set my own SMTP parameters. The middle option is selected by default on most installers, and that is where the trouble begins.
PHP's mail() hands the message to the local MTA on whatever host PrestaShop is installed on. That host:
- Uses a shared IP that your SPF record does not authorise.
- Signs DKIM (if at all) for the host's domain, not yours.
- Has no per-domain sender reputation — the IP's reputation is a blend of every site on that server.
- Often sits on public blocklists because spammers target cheap shared hosts.
Gmail and Outlook run spf=, dkim=, and dmarc= checks against the From header and envelope before routing. When PHP mail fails all three, you land in Spam — or get rejected outright.
Configure SMTP in PrestaShop Back Office
The SMTP path puts you on a dedicated provider with a known good reputation. Here is the walk-through.
- Log in to PrestaShop Back Office as an admin.
- Navigate to
Advanced Parameters → Email. On PrestaShop 1.7 and 8.x this is the correct menu path. - Under Email, select
Set my own SMTP parameters (for advanced users ONLY). - Fill in the fields:
- Mail domain name: your shop domain (e.g.
shop.example.com). - SMTP server: your provider's SMTP hostname.
- SMTP user and SMTP password: from the provider's dashboard.
- Encryption:
TLS(port 587) orSSL(port 465). - Port: 587 for TLS, 465 for SSL.
- Mail domain name: your shop domain (e.g.
- Click Save, then use the Test your email configuration box at the bottom with your own address.
Recommended SMTP providers for PrestaShop
Not every provider is a good fit for PrestaShop. Some cap volume, some reject domains younger than 30 days, some have terrible soft- bounce handling. Three that work well:
Postmark:
SMTP host: smtp.postmarkapp.com
Port: 587 (TLS)
Username: <server API token>
Password: <server API token>
Notes: Transactional only, excellent reputation, ~1s delivery.
SendGrid:
SMTP host: smtp.sendgrid.net
Port: 587 (TLS)
Username: apikey
Password: <API key>
Notes: Generous free tier (100/day), good EU routing.
Brevo (Sendinblue):
SMTP host: smtp-relay.brevo.com
Port: 587 (TLS)
Username: your-brevo-login@brevo.com
Password: <SMTP key>
Notes: EU-based, good for GDPR-sensitive shops.For very small shops Google Workspace SMTP also works, but you will hit the 2,000-recipients-per-day cap on busy Black Friday weekends. Dedicated transactional providers are more forgiving.
SPF, DKIM, DMARC — non-negotiable
SMTP alone does not pass authentication. You still have to tell the world that the SMTP provider is allowed to send for your domain.
- SPF: a single TXT record at the apex of your domain. Example for Postmark:
v=spf1 a mx include:spf.mtasv.net ~all. - DKIM: the provider generates a public-key selector (e.g.
20260101._domainkey.yourdomain.com). You publish a CNAME or TXT, the provider signs outgoing mail with the private half. - DMARC: a TXT record at
_dmarc.yourdomain.com. Start withv=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com.
Once the DNS propagates (usually 15 minutes), send yourself a test message and inspect headers. You want three green lines: spf=pass, dkim=pass, dmarc=pass.
Better options: PrestaShop mail modules
The built-in SMTP works but lacks retry logic, queueing, and analytics. Modules from the PrestaShop marketplace can add these and usually pay for themselves in a month.
- SMTP Mail Pro — paid module that queues failed messages, retries on soft bounce, and logs every send with provider response codes.
- SendGrid / Mailgun native modules — use the provider's API instead of SMTP. Faster, better error reporting, handles large attachments.
- Email Alerts Pro — extends PrestaShop's built-in alerts with more trigger points (abandoned cart, back-in-stock, loyalty points).
PrestaShop often uses the shop contact email (e.g. noreply@yourdomain.com) as the From header. Make sure that mailbox actually exists and that the domain matches your authenticated SMTP provider. A From on a different domain than your DKIM signer will fail DMARC alignment.
Seed-test before enabling customer sends
Never trust the Back Office test button alone — it only confirms SMTP credentials work. You need to see where real order emails actually land across mailbox providers.
- Create a test product priced at zero or one cent.
- Place an order using a seed-test address. Tools like the free inbox checker give you one address that forwards to 20+ real mailboxes.
- Review placement at Gmail, Outlook, Yahoo, iCloud, ProtonMail, Mail.ru, Yandex, and GMX.
- Check headers in Gmail. Confirm
dkim=pass header.d=yourdomain.com. If DKIM shows the provider's domain instead, your custom DKIM CNAMEs are not configured.
Re-run this test after every major PrestaShop upgrade. Module updates sometimes overwrite the Email transport setting, silently reverting you to PHP mail.
A native PrestaShop integration is in private beta. It monitors transactional sends, alerts when DMARC drifts, and seed-tests order-confirmation templates before every store deploy.
Frequently asked questions
Why does PrestaShop default to PHP mail() if it is so bad?
Historical reasons. PrestaShop 1.x was written when shared hosting with working sendmail binaries was the norm and authentication standards were looser. Modern Gmail and Outlook require SPF + DKIM + DMARC, which that path can never provide cleanly.
Can I use my own cPanel email account for SMTP?
Technically yes, but you inherit the host's IP reputation and any blocklist issues. For anything above test traffic, use a dedicated provider like Postmark or SendGrid.
Do I need a different SMTP account per store in a multistore setup?
Not necessarily. One provider account can authenticate multiple domains if you add DKIM records for each. The Back Office lets you set different From addresses per store while sharing the same SMTP relay.
How do I debug when SMTP just silently fails?
Enable debug mode in PrestaShop (Advanced Parameters → Performance) and check var/logs/. PHPMailer errors are logged there. Common issues: wrong port, blocked outbound 587, expired API key.