Mailversand in Contao
Symphony Mailer
Section titled “Symphony Mailer”Symphony Swiftmailer war eine PHP-Mailer library zum Versand von E-Mails aus PHP applications, dieser wurde eingestellt bzw. zu Symphony Mailer, den Contao ab der Version 4.10 verwendet
Der Symfony Mailer hat verschiedene Transports eingebaut:
- SMTP (empfohlen – wenn Transports eingebaut werden, werden die Angaben in der
nicht mehr berücksichtigt - sowieso nicht mehr, oder?)parameters.yaml - local: sendmail binary (mit bestimmten Einstellungen)
- nativ: sendmail (mit Optionen, die in den sendmail_path settings der
php.inikonfiguriert sind)
Sendmail
Section titled “Sendmail”Sendmail ist ein Open-Source MTA (Mail Transfer Agent), komplexe Konfiguration, Sicherheitslücken, kein authorisiertes Postfach, kein vertrauenswürdiger Absender, Mails landen gerne im Spam
SMTP-Mailer-Transports
Section titled “SMTP-Mailer-Transports”Erlauben verschiedene E-Mail Konfigurationen und Absenderadressen
Schritt 1
die verfügbaren E-Mail Versandmethoden müssen in der config.ymlals sogenannte »Transports« eingegeben werden, in folgendem Format (DNS-Syntax):
#SMTP-Einstellungen
framework: mailer: transports: system: smtp://<BENUTZERNAME>:<PASSWORT>@<HOSTNAME>:<PORT>
oder mit automatischer Verwendung von SSL über Port 465: system: smtps://<BENUTZERNAME>:<PASSWORT>@<HOSTNAME>Wenn die Mailadresse Sonderzeichen enthält, dann muss sie zuvor encodiert werden: URL-Encoder. Benutzername und Passwort separat encodieren.
In der config.yml muss die jeweilige Kodierung eines Sonderzeichens mit einem zusätzlichen % eingeleitet werden.
Schritt 2
Jetzt können die konfigurierten Transports für das Backend verfügbar gemacht werden (Auswahlmöglichkeit bei Formularen, Newsletter, Modulen, …)
Weiter in der config.yml, hier kann dann auch die Absenderadresse überschrieben werden:
contao: mailer: transports: system: from: Blubb <email@example.de>Benötigt man nun mehrere verschiedene Absender, kann das alles über einen Transport gelöst werden. D.h., man kopiert die DNS-Syntax so oft, wie man Absender braucht, und stellt das jeweilige Präfix zur Identifikation an den Anfang. Das könnte dann so aussehen:
#SMTP-Einstellungen
framework: mailer: transports: system: smtp://<BENUTZERNAME>:<PASSWORT>@<HOSTNAME>:<PORT> formular: smtp://<BENUTZERNAME>:<PASSWORT>@<HOSTNAME>:<PORT> newsletter: smtp://<BENUTZERNAME>:<PASSWORT>@<HOSTNAME>:<PORT>
contao: mailer: transports: system: from: Bli <system@example.de> formular: from: Bla <formular@example.de> newsletter: from: Blubb <newsletter@example.de>Reihenfolge
Section titled “Reihenfolge”- wenn kein Transport konfiguriert ist, werden die Daten aus der
parameters.yamlenv.localverwendet - wenn Transports konfiguriert sind, aber keiner ausgewählt ist, wird der erste definierte Transport verwendet
Versand über Outlook
Section titled “Versand über Outlook”Wenn Mails über Outlook versendet werden und ein MX-Eintrag in den DNS-Einstellungen hinerlegt ist, dann muss das Formular über einen SMTP-Server einer anderen Domain versendet werden. Nun gibt es aber Probleme, wenn die Domain, über die der Versand läuft, auf demselben Server gehostet wird wie die Empfängerdomain des Kontaktformulares (z.B. bei connect-sozialwirtschaft.at und sozialplattform.at) - aber manchmal eben auch nicht, wie z.B. bei die-gaertnerin.at und hamischnaps.at. Warum ist das so?
MS Exchange
Section titled “MS Exchange”In Contao wird eine E-Mail-Adresse für Systemnachrichten in den Seiteneinstellungen hinterlegt (in der Regel ist das die Adresse des Kunden). Der eingebaute Swiftmailer nimmt die als Absenderadresse her. Problem mit MS Exchange: Absenderadresse und “vorgeschobene” Absenderadresse (z.B. beim Kontaktformular oder beim Newsletter) muss gleich mit dieser Absenderadresse sein, sonst stuft der Exchange-Server das als Spam ein bzw. nimmt die Nachricht erst gar nicht an. Ab Contao 4.10 wird der Swiftmailer durch den Symphony-Mailer ersetzt. Der Mailer-Transport (=SMTP-Konfiguration http://:@: bzw. https://BENUTERNAME>:@) wird in der App-Konfiguration definiert und im Backend für den Mailversand ausgewählt. Dadurch ist es möglich, Newsletter über ein anderes SMTP-Postfach und eine andere E-Mail-Adresse zu versenden als Formulardaten und Systemnachrichten.