Skip to content

Mailpit

A Mailpit egy helyi levélelkapó: SMTP-szerverként fogadja a leveleket, és webes felületen mutatja őket, így a WordPress levelei nem érnek el valódi címzettet.

This content is not available in your language yet.

A Mailpit egy kis SMTP-szerver, webes felülettel és API-val. Minden levelet elfog, amit hozzá küldenek, eltárolja, és megmutatja a böngészőben. Fejlesztésnél ezért ideális: a WordPress wp_mail() hívásai kimehetnek, de valódi vásárlóhoz egyetlen levél sem jut el. Tipikus felhasználás a WooCommerce rendelési leveleinek kipróbálása.

Alapértelmezésben a webes felület és az API a 8025-ös, az SMTP a 1025-ös porton figyel.

macOS-en Homebrew-val:

Terminál
brew install mailpit
brew services start mailpit

Linuxon és macOS-en a telepítő szkripttel (a /usr/local/bin/mailpit helyre kerül):

Terminál
sudo sh < <(curl -sL https://raw.githubusercontent.com/axllent/mailpit/develop/install.sh)

Dockerrel:

Terminál
docker run -d \
--restart unless-stopped \
--name=mailpit \
-p 8025:8025 \
-p 1025:1025 \
axllent/mailpit

Ha a levelek nem tűnhetnek el a leállítással, adj meg adatbázisfájlt. Enélkül a Mailpit ideiglenes fájlt használ, amit kilépéskor töröl.

A telepítés után a mailpit paranccsal indítod. Ezután a http://localhost:8025 címen nyílik a felület.

A legfontosabb beállítások kapcsolóval vagy környezeti változóval adhatók meg:

Kapcsoló Környezeti változó Alapérték Mit csinál
--listen MP_UI_BIND_ADDR 0.0.0.0:8025 a webes felület és az API címe
--smtp MP_SMTP_BIND_ADDR 0.0.0.0:1025 az SMTP címe
--database MP_DATABASE ideiglenes fájl tartós adatbázisfájl
--max MP_MAX_MESSAGES 500 a tárolt levelek maximuma, a régebbieket törli. A 0 kikapcsolja a törlést.

Példa: csak a saját gépedről érhető el, és megmaradnak a levelek.

Terminál
mailpit --listen 127.0.0.1:8025 --smtp 127.0.0.1:1025 --database ./mailpit.db

A WordPress a wp_mail() függvénnyel küld, ami belül a PHPMailer osztályt használja. A phpmailer_init akció a PHPMailer előkészítése után fut le, és referenciaként átadja a példányt. Itt átállíthatod SMTP-re, és a Mailpitre irányíthatod.

Tedd a kódot must-use bővítménybe. A mu-plugin minden betöltéskor aktív, nem kapcsolható ki a felületről, és csak a mu-plugins mappa közvetlen PHP-fájljait tölti be a WordPress. Alapértelmezett helye a wp-content/mu-plugins, Bedrockban a web/app/mu-plugins.

mu-plugins/mailpit.php
<?php
/**
* Plugin Name: Mailpit
* Description: A helyi levelek a Mailpitbe mennek.
*/
add_action( 'phpmailer_init', function ( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = 'localhost';
$phpmailer->Port = 1025;
$phpmailer->SMTPAuth = false;
} );

A Host, Port, SMTPAuth és isSMTP() ugyanazok a PHPMailer-tulajdonságok, mint a WordPress doksi SMTP-példájában. Ha a Mailpit másik gépen vagy konténerben fut, a Host értéke legyen annak a neve vagy címe.

Ha a kód csak fejlesztői környezetben fusson, tedd feltételhez. Bedrockban az WP_ENV állandó erre való:

mu-plugins/mailpit.php
if ( defined( 'WP_ENV' ) && 'development' !== WP_ENV ) {
return;
}

Próbálj ki egy levelet WP-CLI-vel:

Terminál
wp eval 'var_dump( wp_mail( "[email protected]", "Mailpit teszt", "Megjött?" ) );'

Ha a válasz bool(true), a levélnek meg kell jelennie a Mailpit felületén.

Ha DDEV-et vagy Localt használsz, nem kell saját Mailpitet telepítened és a fenti kódot sem kell megírnod.

  • A DDEV a helyi oldalról küldött leveleket a beépített Mailpitben fogja meg. Megnyitni: ddev launch -m vagy ddev mailpit.
  • A Local szintén Mailpitet használ. A leveleket a Tools → Mailpit → Open Mailpit gombbal nézheted meg.

WooCommerce rendelési levelek kipróbálása

Szekció neve “WooCommerce rendelési levelek kipróbálása”

Ha a Mailpit fut és a WordPress rá van kötve:

  1. Adj le tesztrendelést a webshopban.
  2. Nyisd meg a Mailpit felületét (http://localhost:8025).
  3. Nézd meg a rendelés visszaigazolását és az adminnak szóló értesítést: tárgyat, feladót, címzettet, a levél megjelenését.
  4. Állítsd át a rendelés állapotát az adminban, és ellenőrizd a következő levelet is.

A felületen a leveleket HTML és szöveges nézetben is látod, a fejlécekkel együtt. Így kiderül, ha a sablon felülírása elrontotta a levél kinézetét, vagy rossz a feladó címe.

A Mailpit REST API-ja a /api/v1/ útvonalon érhető el, a dokumentációja a futó példányon is megnyílik: http://localhost:8025/api/v1/. Az útvonalak között van levéllista (/api/v1/messages), egy levél lekérése (/api/v1/message/{ID}), keresés (/api/v1/search) és törlés. Automatizált tesztből így ellenőrizheted, hogy kiment-e a levél.

Terminál
curl http://localhost:8025/api/v1/messages

A paraméterekért és a válasz szerkezetéért nézd a hivatalos API-dokumentációt.

  • A Mailpit fejlesztői eszköz. Éles oldalon ne használd, mert a leveleket nem a címzettnek kézbesíti.
  • Ne tedd elérhetővé az internetről: a leveleid érzékeny adatot tartalmazhatnak. Fejlesztői gépen a 127.0.0.1 címre köthetsz.
  • Az ideiglenes adatbázis kilépéskor törlődik. Tartós tároláshoz add meg a --database kapcsolót.
  • Az elfogott leveleket a Mailpit alapból legfeljebb 500-ig tárolja.

Published:

We respect your privacy

We use cookies to improve your browsing experience and to analyse traffic. Analytics only starts if you allow it. Privacy policy, Cookie policy.

Cookie settings