Trimiterea de e-mailuri
Aveți de gând să trimiteți e-mailuri, cum ar fi buletine informative sau confirmări de comenzi? Nette Framework oferă instrumentele necesare cu un API foarte bun. Vom arăta:
- cum să creați un e-mail, inclusiv atașamente
- cum să îl trimiteți
- cum să combinați e-mailurile și șabloanele
Instalare
Descărcați și instalați pachetul folosind Composer:
Crearea de e-mailuri
E-mailul este un obiect Nette\Mail\Message:
Toți parametrii trebuie să fie codificați în UTF-8.
Pe lângă specificarea destinatarilor cu metoda addTo()
, puteți specifica și destinatarul copiei cu
addCc()
, sau destinatarul copiei oarbe cu addBcc()
. Toate aceste metode, inclusiv
setFrom()
, acceptă destinatarii în trei moduri:
Corpul unui e-mail scris în HTML este transmis cu ajutorul metodei setHtmlBody()
:
Nu trebuie să creați o alternativă de text, Nette o va genera automat pentru dumneavoastră. Iar dacă e-mailul nu are un
subiect setat, acesta va fi preluat din fișierul <title>
element.
Imaginile pot fi, de asemenea, extrem de ușor de inserat în corpul HTML al unui e-mail. Trebuie doar să treceți ca al doilea parametru calea în care se află fizic imaginile, iar Nette le va include automat în e-mail:
Algoritmul de încorporare a imaginilor acceptă următoarele modele: <img src=...>
,
<body background=...>
, url(...)
în interiorul atributului HTML style
și sintaxa
specială [[...]]
.
Poate trimiterea de e-mailuri să fie și mai ușoară?
E-mailurile sunt ca niște cărți poștale. Nu trimiteți niciodată parole sau alte credențiale prin e-mail.
Atașamente
Puteți, desigur, să atașați atașamente la e-mail. Folosiți opțiunea
addAttachment(string $file, ?string $content = null, ?string $contentType = null)
.
Șabloane
Dacă trimiteți e-mailuri HTML, este o idee excelentă să le scrieți în sistemul de șabloane Latte. Cum să o faceți?
Fișier email.latte
:
Nette inserează automat toate imaginile, stabilește subiectul în funcție de <title>
element, și
generează o alternativă de text pentru corpul HTML.
Utilizare în aplicația Nette
Dacă utilizați e-mailuri împreună cu Nette Application, adică prezentatori, este posibil să doriți să creați legături
în șabloane utilizând atributul n:href
sau eticheta {link}
. Practic, Latte nu le cunoaște, dar este
foarte ușor să le adăugați. Crearea de link-uri poate face obiectul Nette\Application\LinkGenerator
, pe care îl
obțineți prin trecerea acestuia folosind injecția de
dependență.
În șablon, legătura este creată ca într-un șablon normal. Toate legăturile create prin intermediul LinkGenerator sunt absolute:
Trimiterea de e-mailuri
Mailer este clasa responsabilă pentru trimiterea de e-mailuri. Ea implementează interfața Nette\Mail\Mailer și sunt disponibile mai multe clase de maileri gata făcute, pe care le vom prezenta.
Cadrul de lucru adaugă automat un serviciu Nette\Mail\Mailer
bazat pe configurație la containerul DI, pe care îl obțineți trecându-l folosind injecția de dependență.
SendmailMailer
Mailerul implicit este SendmailMailer care folosește funcția PHP mail. Exemplu de utilizare:
Dacă doriți să setați returnPath
și serverul încă îl suprascrie, utilizați
$mailer->commandArgs = '-fmy@email.com'
.
SmtpMailer
Pentru a trimite mesaje prin intermediul serverului SMTP, utilizați SmtpMailer
.
Următorii parametri suplimentari pot fi trecuți în constructor:
port
– dacă nu este setat, se va utiliza valoarea implicită 25 sau 465 pentrussl
timeout
– timeout pentru conexiunea SMTPpersistent
– utilizează o conexiune persistentăclientHost
– desemnarea clientuluistreamOptions
– vă permite să setați SSL context options pentru conexiune
FallbackMailer
Nu trimite e-mailuri, ci le trimite prin intermediul unui set de expeditori. În cazul în care un maililer eșuează, repetă încercarea la următorul. Dacă ultimul eșuează, o ia de la capăt de la primul.
Alți parametri din constructor includ numărul de repetări și timpul de așteptare în milisecunde.
DKIM
DKIM (DomainKeys Identified Mail) este o tehnologie de e-mail de încredere care ajută la detectarea mesajelor false. Mesajul trimis este semnat cu cheia privată a domeniului expeditorului, iar această semnătură este stocată în antetul e-mailului. Serverul destinatarului compară această semnătură cu cheia publică stocată în înregistrările DNS ale domeniului. Prin compararea semnăturii, se demonstrează că mesajul electronic provine de fapt din domeniul expeditorului și că mesajul nu a fost modificat în timpul transmiterii acestuia.
Puteți seta mailer pentru a semna e-mailurile în configurare. Dacă nu utilizați injecția de dependență, aceasta este utilizată după cum urmează:
Configurarea
Prezentare generală a opțiunilor de configurare pentru Nette Mail. Dacă nu utilizați întregul cadru, ci doar această bibliotecă, citiți cum se încarcă configurația.
În mod implicit, pentru trimiterea de e-mailuri se utilizează aplicația de poștă electronică
Nette\Mail\SendmailMailer
, care nu este configurată suplimentar. Cu toate acestea, îl putem comuta la
Nette\Mail\SmtpMailer
:
Puteți dezactiva autentificarea certificatului SSL folosind opțiunea context › ssl › verify_peer: false
. Se
recomandă cu tărie să nu faceți acest lucru, deoarece va face aplicația vulnerabilă. În schimb, add certificates to trust store.
Pentru a crește gradul de încredere, putem semna e-mailurile folosind tehnologia DKIM:
Servicii DI
Aceste servicii sunt adăugate la containerul DI:
Nume | Tip | Tip | Descriere
mail.mailer |
Nette\Mail\Mailer | Clasa de trimitere de e-mail |
---|---|---|
mail.signer |
Nette\Mail\Signer | Semnarea DKIM |