Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort
Vorwort
1 PEAR – Einführung
2 Authentication
3 Caching
4 Date and Time
5 File Formats
6 HTTP
7 Internationalization
8 Mail
9 Networking
10 PHP
11 Text
12 Web Services
13 Benchmarking
14 Configuration
15 Database
16 File System
17 HTML
18 Images
19 Logging
20 Math
21 Numbers
22 Tools and Utilities
23 XML
24 Selbst Pakete erstellen
25 PECL
Index
Ihre Meinung?

Spacer
 <<   zurück
PHP PEAR von Carsten Möhrke
Anwendung und Entwicklung – Erweiterungen für PHP schreiben
Buch: PHP PEAR

PHP PEAR
798 S., 39,90 Euro
Rheinwerk Computing
ISBN 3-89842-580-0
gp 8 Mail
  gp 8.1 Mail
  gp 8.2 Mail_Mime
  gp 8.3 Mail_Queue
  gp 8.4 Mail_IMAPv2

8 Mail

Das Versenden von Mails ist eine alltägliche Aufgabe bei der Erstellung von Webapplikationen. Neben dem Versand von Formularinhalten müssen auch oft Mails mit Anhängen verschickt werden, oder es sollen große Mengen von Mails im Rahmen eines Newsletters versandt werden.


Rheinwerk Computing

8.1 Mail  toptop


Besprochene Version: 1.1.4 Lizenz: PHP/BSD
Klassendatei(en): Mail.php

PEAR::Mail ist eine Klasse, mit der Sie E-Mails versenden können. Gegenüber dem Mail-Befehl von PHP bietet diese Klasse den Vorteil, dass die E-Mails auf verschiedenen Wegen verschickt werden können. Entweder greift die Klasse auf die PHP-Funktion mail() zurück, nutzt ein installiertes sendmail oder verschickt die Nachrichten mithilfe des SMTP-Protokolls über einen externen Server.

Um eine Instanz der Klasse zu erhalten, ist eine Factory-Methode definiert. Diese wird statisch aufgerufen und bekommt die Information übergeben, welche Versandmethode bzw. welcher MTA (Mail Transport Agent) genutzt werden soll. Mit dem zweiten Parameter können Sie in Abhängigkeit vom verwendeten Mailer ein Array mit Optionen übergeben.

Um dafür zu sorgen, dass das Paket im Hintergrund die Funktion mail() nutzt, übergeben Sie der Factory-Methode den String 'mail'. Der zweite Parameter kann in diesem Fall ein String oder ein Array sein. Ist der Safe-Mode auf dem Server, auf dem Sie arbeiten, nicht eingeschaltet, so werden diese Daten als fünfter Parameter an die Funktion mail() übergeben. Übergeben Sie die Daten als Array, werden die Werte mit Leerzeichen getrennt und als String zusammengefasst. Informationen zu diesem letzten Parameter erhalten Sie unter http://www.php.net/de/mail.

require_once('Mail.php'); 
$mailer= Mail::factory('mail','-f postmaster@example.com');

Damit das Paket direkt auf das Programm sendmail zugreift, übergeben Sie als ersten Parameter den String 'sendmail'. In diesem Fall benötigt die Factory-Methode als zweiten Parameter ein assoziatives Array. Mit dem Schlüssel 'sendmail_path' müssen Sie hierbei den Pfad zu dem Programm sendmail bzw. zu dem entsprechenden Wrapper übergeben. Möchten Sie noch zusätzliche Kommandozeilen-Optionen übergeben, ist dafür der Schlüssel 'sendmail_arg' vorgesehen. Hiermit können Sie einen String übergeben, der beim Aufruf von sendmail direkt übergeben wird.

Die vielleicht interessanteste Möglichkeit zum Versand von E-Mails ist aber sicherlich die Nutzung eines SMTP-Servers. Wenn Sie Zugriff auf einen entsprechenden Server haben, können Sie der Methode als ersten Parameter den String 'smtp' übergeben. Danach folgt ein assoziatives Array, in dem die notwendigen Informationen übergeben werden. Der Schlüssel 'host' enthält den Namen oder die IP-Adresse des Servers. Geben Sie hier keinen Wert an, nutzt das System 'localhost'. Der Verbindungsaufbau erfolgt standardmäßig über den Port 25, was Sie aber ändern können, wenn Sie im Feld 'port' einen anderen Wert übergeben. Per Default verlangt das SMTP-Protokoll keine Authentifizierung gegenüber dem Server. Aus Sicherheitsgründen wird diese inzwischen allerdings in den meisten Fällen von den Providern vorlangt. Wenn Sie sich authentifizieren müssen, übergeben Sie im Feld 'auth' den Wert true und in den Elementen 'username' und 'password' die Benutzerkennung und das Passwort.

Hilfreich kann auch noch die Klasse Mail_null sein. Ein Objekt dieser Klasse erhalten Sie, wenn Sie der Factory-Methode 'null' als ersten Parameter übergeben. Der zweite Parameter wird in diesem Fall ignoriert. Mail_null verschickt keine Mails, stellt aber eine Methode bereit, die den Versand von E-Mails simuliert. Diese Klasse ist sehr hilfreich, wenn Sie eine Applikation testen wollen, ohne ständig E-Mails zu verschicken.

Nachdem Sie auf diesem Weg ein Objekt generiert haben, können Sie die Methode send() nutzen, um eine Mail zu verschicken.

Der bzw. die Empfänger der E-Mail werden an erster Stelle übergeben. Hierzu können Sie entweder ein Array nutzen oder die Werte in einem String, getrennt durch Kommata, übergeben. Als zweiter Parameter ist ein assoziatives Array mit Headern zu nutzen, die zum Versand der Mail verwendet werden sollen. Der Name des Headers ergibt sich aus dem Schlüssel des Array-Elements, und der Wert des Array-Elements wird zum Wert des Headers.

Hier sollten Sie mindestens die Header From für die Angabe des Absenders und Subject für die Betreffzeile der Mail nutzen.

Der dritte Parameter ist ein String, der den eigentlichen Inhalt der Mail repräsentiert.

Konnte die Mail versandt werden, gibt die Methode true zurück und andernfalls ein PEAR_Error-Objekt.

require_once('Mail.php'); 
 
$options = array ( 
               'host'      => 'smtp.example.com', 
               'auth'      => true, 
               'username'  => 'user', 
               'password'  => 'geheim' 
           ); 
$mailer = Mail::factory('smtp',$options); 
if (true === PEAR::isError($mailer)) 
{ 
   die ($mailer->getMessage()); 
} 
$empfaenger = 'cmoehrke@netviser.de'; 
 
$headers=array( 
            'From' => 'absender@example.com', 
            'To' => 'cmoehrke@netviser.de', 
            'Subject' => 'Die Hallo-Welt-Mail' 
         ); 
 
$res=$mailer->send($empfaenger,$headers,'Hallo Welt'); 
if (true === PEAR::isError($res)) 
{ 
   die ($res->getMessage()); 
}

Listing 8.1 Versand einer E-Mail via SMTP

 <<   zurück
     
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: PHP PEAR
PHP PEAR
Jetzt Buch bestellen!
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: PHP 5.6 und MySQL 5.7






 PHP 5.6 und
 MySQL 5.7


Zum Rheinwerk-Shop: Einstieg in PHP 5.6 und MySQL 5.6






 Einstieg in PHP 5.6
 und MySQL 5.6


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Moderne Websites entwickeln






 Moderne Websites
 entwickeln


Zum Rheinwerk-Shop: MySQL 5.6






 MySQL 5.6


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo








Copyright © Rheinwerk Verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern