E-mailek küldése
E-maileket fog küldeni, például hírleveleket vagy rendelés visszaigazolásokat? A Nette Framework egy nagyon szép API-val biztosítja a szükséges eszközöket. Megmutatjuk:
- hogyan hozhatunk létre e-mailt, csatolmányokkal együtt
- hogyan kell elküldeni
- hogyan lehet e-maileket és sablonokat kombinálni
Telepítés
Töltse le és telepítse a csomagot a Composer segítségével:
E-mailek létrehozása
Az e-mail egy Nette\Mail\Message objektum:
Minden paramétert UTF-8 kódolásban kell megadni.
A addTo()
módszerrel megadott címzettek mellett a addCc()
módszerrel a másolat címzettjét, a
addBcc()
módszerrel pedig a vakmásolat címzettjét is megadhatja. Mindezek a módszerek, beleértve a
setFrom()
-t is, háromféleképpen fogadják el a címzettet:
A HTML-ben írt e-mail testét a setHtmlBody()
módszerrel adja át:
Nem kell szöveges alternatívát létrehoznia, a Nette automatikusan generálja Önnek. Ha pedig az e-mailnek nincs
beállított tárgya, akkor azt a Nette a <title>
elemet.
A képek is rendkívül egyszerűen beilleszthetők az e-mail HTML testébe. Csak adja meg második paraméterként azt az elérési utat, ahol a képek fizikailag találhatók, és a Nette automatikusan beilleszti őket az e-mailbe:
A képbeágyazási algoritmus a következő mintákat támogatja: <img src=...>
,
<body background=...>
, url(...)
a HTML-attribútumon belül style
és speciális
szintaxis [[...]]
.
Lehet még egyszerűbb az e-mailek küldése?
Az e-mailek olyanok, mint a képeslapok. Soha ne küldjön jelszavakat vagy más hitelesítő adatokat e-mailben.
Csatolmányok
Természetesen csatolhat csatolmányokat is az e-mailhez. Használja a
addAttachment(string $file, ?string $content = null, ?string $contentType = null)
.
Sablonok
Ha HTML e-maileket küldesz, érdemes a Latte sablonrendszerben megírni őket. Hogyan kell ezt megtenni?
Fájl email.latte
:
A Nette automatikusan beilleszti az összes képet, beállítja a témát a megadott <title>
elemnek
megfelelően, és alternatív szöveget generál a HTML-szövegtesthez.
Használat a Nette alkalmazásban
Ha e-maileket használ a Nette alkalmazással együtt, azaz előadókat, akkor a sablonokban linkeket hozhat létre a
n:href
attribútum vagy a {link}
címke használatával. A Nette alapvetően nem ismeri ezeket, de
nagyon könnyen hozzáadhatja őket. A linkek létrehozásához képes objektum Nette\Application\LinkGenerator
,
amelyet a függőségi injektálással történő átadással
kapunk.
A sablonban a linket úgy hozzuk létre, mint egy normál sablonban. Minden LinkGeneratoron keresztül létrehozott link abszolút:
E-mail küldése
A Mailer osztály felelős az e-mailek küldéséért. A Nette\Mail\Mailer interfészt valósítja meg, és számos kész mailer áll rendelkezésre, amelyeket be fogunk mutatni.
A keretrendszer automatikusan hozzáad egy Nette\Mail\Mailer
szolgáltatást a konfiguráció alapján a DI konténerhez, amit függőségi injektálással átadva kapunk meg.
SendmailMailer
Az alapértelmezett levelező a SendmailMailer, amely a mail PHP függvényt használja. Használati példa:
Ha a returnPath
címet szeretné beállítani, és a szerver mégis felülírja, használja a
$mailer->commandArgs = '-fmy@email.com'
címet.
SmtpMailer
Az SMTP-kiszolgálón keresztül történő levélküldéshez használja a SmtpMailer
címet.
A következő további paraméterek adhatók át a konstruktornak:
port
– ha nincs megadva, akkor az alapértelmezett 25 vagy 465 lesz használva assl
esetében.timeout
– az SMTP-kapcsolat időkorlátja.persistent
– állandó kapcsolat használataclientHost
– ügyfélkijelölésstreamOptions
– lehetővé teszi a kapcsolat SSL-kontextus beállításait.
FallbackMailer
Nem küld e-maileket, hanem egy sor levelezőn keresztül küldi azokat. Ha az egyik levelező nem sikerül, megismétli a kísérletet a következővel. Ha az utolsó is sikertelen, akkor az elsőtől kezdi újra.
A konstruktor további paraméterei közé tartozik az ismétlés száma és a várakozási idő milliszekundumban.
DKIM
A DKIM (DomainKeys Identified Mail) egy megbízható e-mail technológia, amely segít a hamisított üzenetek felismerésében is. Az elküldött üzenetet a feladó tartományának magánkulcsával írják alá, és ez az aláírás az e-mail fejlécében tárolódik. A címzett szervere ezt az aláírást összehasonlítja a tartomány DNS-bejegyzésében tárolt nyilvános kulccsal. Az aláírás összevetésével kimutatható, hogy az e-mail valóban a feladó tartományából származik, és hogy az üzenetet nem módosították az üzenet továbbítása során.
A konfigurációban beállíthatja, hogy a mailer aláírja az e-maileket. Ha nem használja a függőségi injektálást, akkor a következőképpen használja:
A konfigurálása.
A Nette Mail konfigurációs lehetőségeinek áttekintése. Ha nem a teljes keretrendszert, hanem csak ezt a könyvtárat használja, olvassa el , hogyan töltse be a konfigurációt.
Alapértelmezés szerint a Nette\Mail\SendmailMailer
levelezőt használja az e-mailek küldésére, amely nincs
tovább konfigurálva. Azonban átállíthatjuk a Nette\Mail\SmtpMailer
címre:
A context › ssl › verify_peer: false
opcióval kikapcsolhatjuk az SSL-tanúsítvány hitelesítését. Ezt
határozottan nem ajánlott megtenni, mivel sebezhetővé teszi az alkalmazást. Ehelyett a tanúsítványok hozzáadása a bizalmi tárolóhoz.
A megbízhatóság növelése érdekében aláírhatjuk az e-maileket a DKIM technológia segítségével:
DI szolgáltatások
Ezek a szolgáltatások hozzáadódnak a DI konténerhez:
Név | Típus | Leírás |
---|---|---|
mail.mailer |
Nette\Mail\Mailer | e-mail küldési osztály |
mail.signer |
Nette\Mail\Signer | DKIM aláírás |