Versenden von E-Mails
Wollen Sie E-Mails wie Newsletter oder Auftragsbestätigungen versenden? Nette Framework bietet die notwendigen Werkzeuge mit einer sehr schönen API. Wir werden es zeigen:
- wie man eine E-Mail erstellt, einschließlich Anhängen
- wie man sie versendet
- wie man E-Mails und Vorlagen kombiniert
Einrichtung
Laden Sie das Paket herunter und installieren Sie es mit Composer:
Emails erstellen
E-Mail ist ein Nette\Mail\Message Objekt:
Alle Parameter müssen in UTF-8 kodiert sein.
Neben der Angabe von Empfängern mit der Methode addTo()
können Sie auch den Empfänger einer Kopie mit
addCc()
oder den Empfänger einer Blindkopie mit addBcc()
angeben. Alle diese Methoden, einschließlich
setFrom()
, akzeptieren den Adressaten auf drei Arten:
Der Textkörper einer in HTML geschriebenen E-Mail wird mit der Methode setHtmlBody()
übergeben:
Sie müssen keine Textalternative erstellen, Nette generiert sie automatisch für Sie. Und wenn die E-Mail keinen Betreff hat,
wird dieser aus dem <title>
Element.
Auch Bilder lassen sich sehr einfach in den HTML-Text einer E-Mail einfügen. Übergeben Sie einfach den Pfad, in dem sich die Bilder physisch befinden, als zweiten Parameter, und Nette fügt sie automatisch in die E-Mail ein:
Der Algorithmus zum Einbetten von Bildern unterstützt die folgenden Muster: <img src=...>
,
<body background=...>
, url(...)
innerhalb des HTML-Attributs style
und die spezielle
Syntax [[...]]
.
Kann das Versenden von E-Mails noch einfacher sein?
E-Mails sind wie Postkarten. Senden Sie niemals Passwörter oder andere Anmeldeinformationen per E-Mail.
Anhänge
Sie können natürlich auch Anhänge an E-Mails anhängen. Verwenden Sie dazu die
addAttachment(string $file, ?string $content = null, ?string $contentType = null)
.
Schablonen
Wenn Sie HTML-E-Mails versenden, ist es eine gute Idee, diese im Latte-Vorlagensystem zu schreiben. Wie man das macht?
Datei email.latte
:
Nette fügt automatisch alle Bilder ein, setzt den Betreff entsprechend dem <title>
Element ein und erzeugt
einen Alternativtext für den HTML-Body.
Verwendung in der Nette-Anwendung
Wenn Sie E-Mails zusammen mit Nette Application verwenden, z.B. Moderatoren, möchten Sie vielleicht Links in Vorlagen mit dem
n:href
Attribut oder dem {link}
Tag erstellen. Latte kennt diese grundsätzlich nicht, aber es ist sehr
einfach, sie hinzuzufügen. Das Erstellen von Links kann das Objekt Nette\Application\LinkGenerator
tun, das Sie
durch Übergabe mittels Dependency Injection erhalten.
In der Vorlage wird der Link wie in einer normalen Vorlage erstellt. Alle über LinkGenerator erstellten Links sind absolut:
Emails verschicken
Mailer ist die Klasse, die für den Versand von E-Mails zuständig ist. Sie implementiert die Schnittstelle Nette\Mail\Mailer und es gibt mehrere fertige Mailer, die wir vorstellen werden.
Das Framework fügt dem DI-Container automatisch einen auf der Konfiguration basierenden
Nette\Mail\Mailer
-Dienst hinzu, den Sie durch Übergabe mittels Dependency Injection erhalten.
SendmailMailer
Der Standard-Mailer ist SendmailMailer, der die PHP-Funktion mail verwendet. Beispiel für die Verwendung:
Wenn Sie returnPath
setzen wollen und der Server es trotzdem überschreibt, verwenden Sie
$mailer->commandArgs = '-fmy@email.com'
.
SmtpMailer
Um E-Mails über den SMTP-Server zu versenden, verwenden Sie SmtpMailer
.
Die folgenden zusätzlichen Parameter können an den Konstruktor übergeben werden:
port
– wenn nicht gesetzt, wird der Standardwert 25 oder 465 fürssl
verwendettimeout
– Timeout für SMTP-Verbindungpersistent
– persistente Verbindung verwendenclientHost
– Client-BezeichnungstreamOptions
– ermöglicht die Einstellung von SSL-Kontextoptionen für die Verbindung
FallbackMailer
Der FallbackMailer versendet keine E-Mails, sondern sendet sie über eine Reihe von Mailern. Wenn ein Mailer fehlschlägt, wiederholt er den Versuch beim nächsten Mailer. Wenn der letzte fehlschlägt, beginnt er wieder mit dem ersten.
Weitere Parameter im Konstruktor sind die Anzahl der Wiederholungen und die Wartezeit in Millisekunden.
DKIM
DKIM (DomainKeys Identified Mail) ist eine vertrauenswürdige E-Mail-Technologie, die auch hilft, gefälschte Nachrichten zu erkennen. Die gesendete Nachricht wird mit dem privaten Schlüssel der Domäne des Absenders signiert, und diese Signatur wird in der Kopfzeile der E-Mail gespeichert. Der Server des Empfängers vergleicht diese Signatur mit dem öffentlichen Schlüssel, der in den DNS-Einträgen der Domäne gespeichert ist. Durch den Abgleich der Signatur wird nachgewiesen, dass die E-Mail tatsächlich von der Domäne des Absenders stammt und dass die Nachricht während der Übertragung nicht verändert wurde.
Sie können den Mailer in der Konfiguration so einrichten, dass er E-Mails signiert. Wenn Sie die Dependency Injection nicht verwenden, wird sie wie folgt eingesetzt:
Konfigurieren von
Überblick über die Konfigurationsmöglichkeiten für Nette Mail. Wenn Sie nicht das gesamte Framework, sondern nur diese Bibliothek verwenden, lesen Sie , wie Sie die Konfiguration laden.
Standardmäßig wird zum Versenden von E-Mails der Mailer Nette\Mail\SendmailMailer
verwendet, der nicht weiter
konfiguriert ist. Wir können ihn jedoch auf Nette\Mail\SmtpMailer
umstellen:
Sie können die Authentifizierung von SSL-Zertifikaten mit der Option context › ssl › verify_peer: false
deaktivieren. Es wird strengstens empfohlen, dies nicht zu tun, da es die Anwendung angreifbar macht. Fügen Sie
stattdessen Zertifikate zum Vertrauensspeicher hinzu.
Um die Vertrauenswürdigkeit zu erhöhen, können wir E-Mails mit der DKIM-Technologie signieren:
DI-Dienste
Diese Dienste werden dem DI-Container hinzugefügt:
Name | Typ | Beschreibung |
---|---|---|
mail.mailer |
Nette\Mail\Mailer | E-Mail-Versandklasse |
mail.signer |
Nette\Mail\Signer | DKIM-Signierung |