Изпращане на имейли
Ще изпращате ли имейли, например бюлетини или потвърждения на поръчки? Рамката Nette предоставя необходимите инструменти с много лесен за използване API. Ние ви показваме:
- как да създадете имейл, включващ прикачени файлове
- как да изпратите
- как да комбинирате имейли и шаблони
Настройка
Изтеглете и инсталирайте пакета с помощта на Composer:
Създаване на имейли
Електронната поща е обект на Nette\Mail\Message:
Всички параметри трябва да са кодирани в UTF-8.
Освен че можете да посочите получатели по метода addTo()
, можете
да посочите и получател на копие по метода addCc()
, или получател на
скрито копие по метода addBcc()
. Всички тези методи, включително
setFrom()
, приемат дестинацията по три начина:
Тялото на имейла, написано в HTML формат, се изпраща чрез метода
setHtmlBody()
:
Не е необходимо да създавате текстов вариант на имейла, Nette ще го
генерира автоматично за вас. А ако нямате тема, тя ще бъде взета от
<title>
.
Изображенията могат да бъдат вмъкнати много лесно в HTML тялото на имейла. Просто подайте пътя, по който изображенията се намират физически, като втори параметър и Nette автоматично ще ги включи в имейла:
Алгоритъмът за вграждане на изображения поддържа следните шаблони:
<img src=...>
, <body background=...>
, url(...)
в атрибута на HTML
style
и специалния синтаксис [[...]]
.
Възможно ли е изпращането на имейли да стане още по-лесно?
Имейлите са като пощенски картички. Никога не изпращайте пароли или други идентификационни данни по имейл.
Прикачени файлове
Разбира се, можете да прикачвате прикачени файлове към имейли.
Използвайте командата
addAttachment(string $file, ?string $content = null, ?string $contentType = null)
.
Шаблони
Ако изпращате имейли в HTML формат, е чудесна идея да ги напишете в системата за шаблони Latte. Как да го направим?
Файл email.latte
:
Nette автоматично вмъква всички изображения, задава темата в
зависимост от елемента <title>
и генерира алтернативен текст за
тялото на HTML.
Използване в приложението Nette
Ако използвате електронна поща заедно с Nette Application, т.е. презентатори,
може да искате да създадете връзки в шаблоните, като използвате
атрибута n:href
или тага {link}
. Latte не ги познава по принцип, но
те са много лесни за добавяне. Създаването на връзки може да се
обработва от обекта Nette\Application\LinkGenerator
, който получавате чрез
предаването му с помощта на вграждане на
зависимости.
В шаблон връзката се създава както в нормален шаблон. Всички връзки, създадени с LinkGenerator, са абсолютни:
Изпращане на имейли
Mailer е класът, който отговаря за изпращането на имейли. Той реализира интерфейса Nette\Mail\Mailer и предлага няколко готови пощенски програми, които ще представим.
Рамката автоматично добавя услугата Nette\Mail\Mailer
, базирана на конфигурация, към контейнера DI, който
получавате, като го предавате чрез инжектиране на зависимости.
SendmailMailer
По подразбиране се използва SendmailMailer, който използва функцията на PHP mail. Пример за използване:
Ако искате да зададете returnPath
, но сървърът все пак го
презаписва, използвайте $mailer->commandArgs = '-fmy@email.com'
.
SmtpMailer
За изпращане на поща чрез SMTP сървър използвайте SmtpMailer
.
Следните допълнителни параметри могат да бъдат предадени на конструктора:
port
– ако не е посочена, ще се използва стойността по подразбиране от 25 или 465 заssl
.timeout
– таймаут за SMTP връзкаpersistent
– използвайте постоянна връзкаclientHost
– възлагане на клиентаstreamOptions
– позволява ви да зададете „SSL контекстни опции“ за:https://www.php.net/…text.ssl.php връзката
FallbackMailer
Той не изпраща имейли, а ги изпраща чрез набор от списъци за изпращане. Ако едно изпращане е неуспешно, то се опитва отново да изпрати следващото. Ако последният не успее, се започва отначало с първия.
Другите параметри в конструктора включват броя на повторенията и времето за изчакване в милисекунди.
DKIM
DKIM (DomainKeys Identified Mail) е технология за сигурна електронна поща, която също така помага за откриване на фалшиви съобщения. Изпратеното съобщение се подписва с частния ключ на домейна на изпращача и този подпис се съхранява в заглавието на имейла. Сървърът на получателя сравнява този подпис с публичния ключ, съхранен в DNS записите на домейна. С проверката на подписа може да се докаже, че имейлът действително е дошъл от домейна на подателя и че съобщението не е било модифицирано по време на предаването.
Можете да конфигурирате пощенския оператор за подписване на имейли в конфигурацията. Ако не използвате налагане на зависимости, тя се задава по следния начин:
Конфигурация
Преглед на конфигурационните настройки за Nette Mail. Ако не използвате цялата рамка, а само тази библиотека, прочетете Как да изтеглите конфигурационния файл.
По подразбиране за изпращане на имейли се използва пощенският
оператор Nette\Mail\SendmailMailer
, който вече не може да се конфигурира.
Можем обаче да го превключим на Nette\Mail\SmtpMailer
:
Можете да деактивирате удостоверяването на SSL сертификат, като
използвате опцията context › ssl › verify_peer: false
. Силно се препоръчва
да не правите това, тъй като това ще направи приложението уязвимо.
Вместо това добавете сертификати в
хранилището за доверие.
За да повишим доверието, можем да подписваме имейли с помощта на технологията DKIM:
Услуги на DI
Тези услуги се добавят към контейнера DI:
Име | Тип | Описание |
---|---|---|
mail.mailer |
Nette\Mail\Mailer | клас за изпращане на електронна поща |
mail.signer |
Nette\Mail\Signer | DKIM подписване |