Galileo Computing < openbook > Galileo 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

Download:
- ZIP, ca. 5,3 MB
Buch bestellen
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
Galileo 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.


Galileo 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 Katalog
Zum Katalog: PHP PEAR
PHP PEAR
Jetzt bestellen!
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Besser PHP programmieren






 Besser PHP
 programmieren


Zum Katalog: PHP 5 und MySQL 5






 PHP 5 und MySQL 5


Zum Katalog: Web Content Management mit PHP 5 und MySQL 5






 Web Content
 Management mit
 PHP 5 und MySQL 5


Zum Katalog: Reguläre Ausdrücke






 Reguläre Ausdrücke


Zum Katalog: Webseiten programmieren und gestalten






 Webseiten
 programmieren
 und gestalten


Zum Katalog: CSS-Praxis






 CSS-Praxis


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Galileo Press 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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de