Benutzer-Werkzeuge

Webseiten-Werkzeuge


dev:sendmail

E-Mail Versand via PHP

via mail()

Die einfachste Art, E-Mail in PHP zu versenden, ist noch immer via nativer PHP-Funktion mail().

ACHTUNG! Beim Versand via mail() ist Vorsicht geboten!
  • Einerseits sollten Sie vergewissern, dass keinerlei ungefilterte Eingabe-Daten (beispielsweise aus $_GET oder $_POST) dem vierten Parameter $additional_headers übergeben werden. Dieser kann für Spamming missbraucht werden!
  • Andererseits sollten Sie darauf achten, dass Sie stets From und Return-Path korrekt im Parameter $additional_headers setzen. Ansonsten werden Ihre E-Mails unter Umständen vom Spam-Filter des Empfängers abgeblockt.

Wir empfehlen Ihnen, auch weitere Header in $additional_headers setzen. Folgendes Beispiel gilt als empfohlene Vorlage:

<?php
$to      = 'recipient@example.com';
$from    = 'sender@example.com';
$subject = 'Testmail 1';
 
$message = <<<EOD
Hi there
This is just an example email body from $from
Bye-Bye!
EOD;
 
$headers  = "Reply-To: $from\r\n";
$headers .= "Return-Path: $from\r\n";
$headers .= "From: $from\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: binary";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-Mailer: PHP ". phpversion() ."\r\n";
 
mail($to, $subject, $message, $headers);

via Zend_Mail

Empfohlene Methode!

Wir empfehlen Ihnen, Zend_Mail für den komfortablen und sicheren Versand Ihrer E-Mails zu verwenden. Sie brauchen dazu nicht zwingend etwas von Zend Framework zu verstehen. Zend Framework ist bereits durch Onlime Webhosting auf dem Webserver installiert und wird stets auf dem aktuellsten Stand gehalten.

In unten stehendem Beispiel sehen Sie, wie einfach es ist, Zend Framework mittels wenigen Zeilen zu konfigurieren. Speichern Sie dieses ZF-Bootstrapping in eine Datei namens zf-bootstrap.php:

<?php
// Define Zend Framework path
defined('ZF_PATH')
    || define('ZF_PATH', '/var/www/shared/zend');
 
// Ensure Zend Framework library is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    ZF_PATH . '/library',
    get_include_path(),
)));
 
date_default_timezone_set('Europe/Zurich');
 
// load Zend base class
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();

Sie können nun ganz komfortabel eine E-Mail mittels der selbsterklärenden Methoden-Aufrufen von Zend_Mail erstellen und versenden:

require_once 'zf-bootstrap.php';
 
$to       = 'recipient@example.com';
$from     = 'sender@example.com';
$fromName = 'Hans Muster';
$subject  = 'Testmail 1';
 
$message = <<<EOD
Hi there
This is just an example email body from $from
Bye-Bye!
EOD;
 
$mail = new Zend_Mail('utf-8');
$mail->setBodyText($message)
     ->setFrom($from, $fromName)
     ->setReturnPath($from)
     ->addTo($to)
     ->setSubject($subject)
     ->send();

Hier eine kurze Auflistung einiger weiteren gängigen Methoden:

  • addBcc(string|array $email)
  • addCc(string|array $email, string $name)
  • addHeader(string $name, string $value, boolean $append = false)

Die restlichen Methoden entnehmen Sie bitte der Zend Framework API Documentation.

Zend_Mail ermöglicht auch den Versand via SMTP Auth. Konfigurieren Sie Zend_Mail via Zend_Mail::setDefaultTransport() einfach in Ihrem Bootstrapping vor dem ersten Instanzieren von Zend_Mail:
$config = array(
    'auth'     => 'login',
    'ssl'      => 'tls',
    'port'     => 587,
    'username' => 'webXXpY',
    'password' => '********',
);
$transport = new Zend_Mail_Transport_Smtp('smtp.onlime.ch', $config);
Zend_Mail::setDefaultTransport($transport);
dev/sendmail.txt · Zuletzt geändert: 2013/11/24 10:32 von phi