E-Mails mit PHP versenden
Sonntag, 11. März 2007 | Autor: Pr0g
Dateianhänge per E-Mail versenden
Um Dateien als Datenteile anhängen zu können muss der “Content-Type” erneut angepasst werden und zwar von “multipart/alternative” in “multipart/mixed”:
$headers .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"' . "\r\n";
Und nun wird für jede Datei ein weiterer Block an die Nachricht angehangen. Der Datentyp wird wie folgt angegeben:
Content-Type: image/jpeg; name="bild.jpg"
Content-Disposition: attachment; filename="bild.jpg"
Content-Transfer-Encoding: base64
Als “Content-Type” wird nun der genaue Typ der Datei angegeben (eine Liste von MIME-Typen ist bspw. bei SelfHTML zu finden), dann der Name der Datei und wie sie kodiert wurde. Um die Datei in einen Text umzuwandeln nehmen wir die Funktion base64_encode(), welche (wie am Namen zu erkennen) die Base64 Kodierung nutzt.
Würden wir nun Text, HTML und Dateien in der E-Mail als Daten anhängen, so würde das E-Mailprogramm die Daten aufgrund des “Content-Type” alle zusammen anzeigen. Jedoch wollen wir, dass entweder Text oder HTML neben dem Dateianhang dargestellt wird. Dazu erstellen wir in dem “multipart/mixed” Block einen Unterblock vom Typ “multipart/alternative”. Ohne diesen Unterblock wäre die E-Mail wie folgt aufgebaut:
- mutlipart/mixed
- Text
- HTML
- Dateien
Durch den Unterblock jedoch erreichen wir folgenden Aufbau:
- multipart/mixed
- multipart/alternative
- Text
- HTML
- Dateien
- multipart/alternative
Der Unterblock hat die selben Merkmale wie die bisherigen Blöcke, als Daten enthält der Block einfach den Text- und HTML Block, welche durch eigene Blocknamen getrennt und abgeschlossen werden.Um unserer Funktion mehrere Dateien als Anhang übergeben zu können habe ich es so geplant, dass ein Array mit einem Element für jede Datei erstellt wird. Die einzelnen Elemente bestehen wiederum aus einem Array mit drei Werten:
- filename: Name (mit relativer/absoluter Pfadangabe) der Datei auf dem Server.
- newname: Name den die Datei in der E-Mail bekommen soll. Kann der selbe Name wie auf dem Server sein.
- filetype: MIME Typ der Datei.




Montag, 18. August 2008
Hi,
Anhand dem folgenden Beispiel wird beschrieben, wie man mit dem phpmailer eine einfache E-Mail versenden kann. http://www.phptoast.de/e-mails-versenden-mit-php/233/
Montag, 18. August 2008
Es ist sicher eine nette Alternative, aber auf das Absenden komplexerer Emails mit Dateianhängen geht das (recht kurze) Beispiel nicht ein. Kann die Klasse das überhaupt, eine Erwähnung der Funktionen wäre sicherlich noch nett
Montag, 18. August 2008
Na klar kann man mit der Klasse auch Mails mit Anhang versenden. Das kannst du über folgende Funktion relaisieren: AddAttachment()
Eine detaillierte Dokumentation findest du hier:
http://phpmailer.codeworxtech.com/index.php?pg=methods