Ü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 die 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/mail @dev

Installation mit Git

$ git clone https://github.com/blar/mail.git

Mail

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 mit dem Sendmail-Transport ist meist einfacher, da Sendmail vom Administrator vorkonfiguriert sein sollte und keine Zugangsdaten benötigt werden.

Curl-Transport
$transport = new CurlTransport('smtp.example.com');
$transport->setCredentials('username', 'password');
$transport->sendMail($mail);

Bemerkung

Der Versand von E-Mails per Curl im selben Script ist deutlich schneller (~1.000%), 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.

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. Es werden jedoch nur Empfänger in der E-Mail angezeigt, die in den Headern To oder BCC angegeben sind.

E-Mail-Adressen als Objekte

$mail = new Mail();
$mail->setFrom(new MailAddress('foobar@example.com', 'Foo Bar'));

$to = new AddressCollection();
$to->push('foo@example.com');
$to->push('bar@example.com');
$mail->setTo($to);

Zusätzliche Header

$mail = new Mail();
$mail->setFrom(new MailAddress('foobar@example.com', 'Foo Bar'));

$to = new AddressCollection();
$to->push('foo@example.com');
$to->push('bar@example.com');
$mail->setTo($to);

$headers = $mail->getHeaders();
$headers->set('Content-Type', 'text/html');
$headers->set('Subject', 'Hello World');

$mail->push('<p>Hello World</p>');

Fluid Interface

$to = new AddressCollection();
$to
    ->push('foo@example.com')
    ->push('bar@example.com');

$mail = new Mail();

$mail
    ->setFrom(new MailAddress('foobar@example.com', 'Foo Bar'))
    ->setTo($to);

$mail
     ->getHeaders()
     ->set('Content-Type', 'text/html')
     ->set('Subject', 'Hello World')
     ->push('<p>Hello World</p>');