Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 ICQ Generator
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
 
 
 

E-Mail mit einem Dateianhang versenden

Sie befinden sich: Home > Php Tutorial > E-Mail mit einem Dateianhan...

E-Mail mit einem Dateianhang versenden


Eintrag am:  07.12.2009
Hits / Besucher:  32938
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von    schubertmedia
 
Beschreibung

Ich zeige ihnen, wie sie eine E-Mail mit einem Dateianhang versenden können. Ich habe dieses Tutorial geschrieben, weil ich eine Frage dazu im Forum des SELFPHP beantworten möchte. Im eigentlichen Sinne ist es recht einfach, eine E-Mail mit Dateianhang zu versenden. Es gibt einige Regeln zu beachten. Hier ist ein Beispiel dafür, wie man eine E-Mail mit einem Dateianhang über PHP verschickt.

Hierbei muss die Datei im gleichen Ordner vorhanden sein, wo das Script liegt. Nach dem Aufruf des Browsers wird die Datei automatisch eingelesen und an die vorkonfigurierten Daten versendet. Wenn die Datei nicht existiert, wird automatisch das Script abgebrochen.

Das Code-Beispiel:

<?php 
/**
* E-Mail-Adresse vom Empfänger
*/
$empfaenger = "info@php-space.info";

/**
* Betreff der E-Mail
*/
$betreff = "E-Mail mit Anhang";

/**
* Name des Absenders
*/
$absender_name = "Php-Space.info";

/**
* E-Mail-Adresse vom Absender
*/
$absender_email = "info@php-space.info";

/**
* Dateiname, die im Anhang versendet werden
soll
*/
$dateiname = "bild.JPG";

/**
* Name der Datei, die im Anhang versendet wird
*/
$dateiname_mail = "anhang.JPG";

$boundary = md5(uniqid(time()));

if (@file_exists($dateiname) == false) {
echo 'Die Datei: '.$dateiname.' gibt es
nicht auf den Server!';
} else {
/**
* Dateiinhalt von Datei auslesen
*/
$dateiinhalt = fread(fopen($dateiname,
"r"), filesize($dateiname));
/**
* Absender Name und E-Mail-Adresse
*/
$mail_header = "From: ".$absender_name."
<".$absender_email.">\n";
$mail_header .= "MIME-Version: 1.0\n";
$mail_header .= "Content-Type:
multipart/mixed;
boundary=".$boundary."\n\n";
$mail_header .= "This is a multi-part
message in MIME format\n";
$mail_header .= "--".$boundary."\n";
$mail_header .= "Content-Type:
text/plain\n";
$mail_header .=
"Content-Transfer-Encoding: 8bit\n\n";
/**
* Text der Email
*/
$mail_header .= "Das ist eine E-Mail mit
Anhang!";
/**
* Dateianhang einfügen
*/
$mail_header .= "n--".$boundary."\n";
$mail_header .= "Content-Type: image/jpg;
name=".$dateiname_mail."\n";
$mail_header .=
"Content-Transfer-Encoding: base64\n";
$mail_header .= "Content-Disposition:
attachment;
filename=".$dateiname_mail."\n\n";
$mail_header .=
chunk_split(base64_encode($dateiinhalt));
$mail_header .= "\n--".$boundary."--";
/**
* Email versenden
*/
@mail($empfaenger, $betreff, "",
$mail_header) or die('Die Email
konnte nicht versendet werden');
}
?>

Ablaufdiagramm

Der gegebene PHP-Code ist ein Beispiel dafür, wie Sie eine E-Mail mit einem Anhang versenden können. In diesem Fall wird eine Bilddatei (.JPG) als Anhang an die E-Mail angehängt.

Ablaufdiagramm vom Beispiel

Erklärung:

Im Folgenden finden Sie eine ausführliche Erklärung zu den einzelnen Schritten und Funktionen des Codes. Zu Beginn werden verschiedene Variablen definiert, um die notwendigen Informationen für das Versenden der E-Mail bereitzustellen.

Dazu gehört die Empfänger-E-Mail-Adresse (Variable $empfaenger), der Betreff der E-Mail ($betreff), der Name des Absenders ($absender_name) und die E-Mail-Adresse des Absenders ($absender_email). Außerdem werden zwei weitere Variablen definiert: $dateiname, welcher den Dateinamen auf dem Server enthält, und $dateiname_mail, welcher den Dateinamen angibt, unter dem der Anhang in der empfangenen E-Mail angezeigt wird.

Danach erzeugt der Code eine Zeichenkette namens $boundary, welche einen eindeutigen Wert enthält und später zur Trennung von verschiedenen Teilen in der MIME-Multipart-Nachricht verwendet wird. Mit einer if-Anweisung prüft der Code dann, ob die Datei (Anhang) auf dem Server existiert, indem er die Funktion file_exists() verwendet. Wenn die Datei nicht gefunden wird, gibt das Skript mithilfe von echo eine Fehlermeldung aus. Anschließend liest das Skript den Inhalt der Datei mithilfe von fread() und speichert diesen in einer Variable namens $dateiinhalt.

Das Skript beginnt damit, den Mailheader zusammenzusetzen, indem es verschiedene Werte zu einer einzigen Zeichenkette zusammenfügt. Es fügt unter anderem den From-Header mit dem Namen und der E-Mail-Adresse des Absenders hinzu. Danach fügt es einen Multipart-MIME-Typ hinzu, mit dem Boundary-Wert als Trennzeichen zwischen Textteil und Anhang.

Weiterhin erstellt das Skript den Textteil der Nachricht innerhalb eines Content-Type-Headers vom Typ text/plain. Dann kommt ein weiterer Content-Type Header für den eigentlichen Anhang (Bild), gefolgt von dessen base64-codierten Inhalt. Die Funktion chunk_split() wird hier verwendet, um diese codierte Zeichenkette in kleinere Teile gleicher Länge zu zerlegen, um sicherzustellen, dass sie korrekt übertragen wird.

Schließlich versendet das Skript die zusammengesetzte Nachricht anhand aller vorher festgelegten Parameter mittels PHPs eingebauter mail()-Funktion.

Ich hoffe, dass dieses Beispiel verständlich genug ist, um es verstehen zu können. Dieser Artikel wird Ihnen einen kurzen Einblick in die Funktionsweise einer E-Mail in PHP geben.

 

Tags:

 

Artikel hinzufügen bei: