Übersicht¶
Mail für PHP.
Inhaltsverzeichnis¶
Requirements¶
- PHP 5.5+
- blar/mime @dev
- blar/curl @dev
- blar/common @dev
Installation¶
Es wird die Installation per Composer_ empfohlen, da hiermit auch alle Abhängigkeiten automatisch aufgelöst werden können. Bei der Installation per Git müssen die Abhängigkeiten manuell gelöst werden.
Installation mit Composer¶
$ composer require blar/test @dev
Installation mit Git¶
$ git clone https://github.com/blar/test.git
:: _Composer http://getcomposer.org/
Mail¶
Über die Standardfunktion mail von PHP können einfache E-Mails versendet werden. Wenn es jedoch darum geht, komplexere E-Mails zu versenden wird es sehr kompliziert.
Auch ist es mit mail() nicht möglich, direkt über externe SMTP-Server E-Mails zu versenden.
Transports¶
Es werden verschiedene Transports bereitgestellt um E-Mails zu versenden.
Sendmail-Transport¶
$transport = new SendmailTransport();
$transport->sendMail($mail);
Bemerkung
Der Versand von E-Mails per Sendmail ist meist einfacher, da dies vom Administrator vorkonfiguriert sein sollte.
Curl-Transport¶
$transport = new CurlTransport('example.com');
$transport->setCredentials('username', 'password');
$transport->sendMail($mail);
Bemerkung
Der Versand von E-Mail per Curl ist deutlich (~1.000%) schneller, da nicht für jede E-Mail ein neuer Prozess von Sendmail gestartet wird, sondern alle E-Mails mit der selben SMTP-Verbindung versendet werden.
Warnung
Auch wenn der E-Mail-Versand durch Curl einen Geschwindigkeitssteigerung von ~1.000% gegenüber den Standardversand per Sendmail verursacht, so sollte trotzdem keine unnötigen oder sogar unerwünschten E-Mails versendet werden.
Beispiel¶
$mail = new Mail();
$mail->setFrom('foobar@example.com');
$mail->setTo('foo@example.com, bar@example.com');
Bemerkung
Mail::setTo() setzt den Envelope-To. In dieser Liste sind alle Empfänger enthalten. Diese müssen nicht in der E-Mail unter den Headern To und CC erscheinen.
E-Mail-Adressen als Objekte¶
$mail = new Mail();
$mail->setFrom(new MailAddress('foobar@example.com', 'Foo Bar'));
$addressCollection = new AddressCollection();
$addressCollection->push('foo@example.com');
$addressCollection->push('bar@example.com');
$mail->setTo($addressCollection);
Zusätzliche Header¶
$mail = new Mail();
$mail->setFrom(new MailAddress('foobar@example.com', 'Foo Bar'));
$addressCollection = new AddressCollection();
$addressCollection->push('foo@example.com');
$addressCollection->push('bar@example.com');
$mail->setTo($addressCollection);
$headers = $mail->getHeaders();
$headers->set('Content-Type', 'text/html');
$headers->set('Subject', 'Hello World');
$mail->push('<p>Hello World</p>');
Fluid Interface¶
$addressCollection = new AddressCollection();
$addressCollection
->push('foo@example.com')
->push('bar@example.com');
$mail = new Mail();
$mail
->setFrom(new MailAddress('foobar@example.com', 'Foo Bar'))
->setTo($addressCollection);
$mail
->getHeaders()
->set('Content-Type', 'text/html')
->set('Subject', 'Hello World')
->push('<p>Hello World</p>');
BCC¶
$mail = new Mail();
$mail->setTo('foo@example.com, bar@example.com');
$mail->getHeaders()->set('To', 'foo@example.com');
Bemerkung
foo@example.com erscheind als Empfänger im E-Mail-Client. Der Empfänger bar@example.com erhält auch die E-Mail, wird jedoch nicht als Empfänger in der Angezeigt (BCC).