phpbar.de logo

Mailinglisten-Archive

[php] Mail::send() - die Zweite

[php] Mail::send() - die Zweite

Andreas Heigl a.heigl at wdv.de
Die Okt 19 14:11:34 CEST 2004


Am 19.10.2004 13:21 Uhr schrieb "Steffen Kother" unter
<steffen.kother at gmx.net>:

> Hallo und einen sch�nen Tag an euch,
> 
> das mit den Namen im From und Reply-To der Mail funktioniert. Habe
> jetzt aber bzgl. meiner Aufgabenstellung ein Verst�ndnisproblem:
> 
> Die Mail soll einen Anhang bekommen und im Mailtext soll ein Link und
> ein bissl Text aufgef�hrt werden.
> 
> Der Text und Link sind nicht das Thema. Mir geht es um den Anhang. Je
> nach Anzahl der Anh�nge wird ja der Mailbody gesplittet. Wie muss ich
> das mit dem Content-Type und Content-Transfer-Encoding machen? Wie
> setze ich die in die Mail ein? auch einfach als Header?
> 
> Vielen Dank f�r Eure Infos dazu, gern auch zum Nachlesen.
Schau mal unter http://phpguru.org/static/mime.mail.html nach. da brauchst
du den ganzen kram nicht selbst programmieren.

alternativ muss folgendes im Body stehen:

$message = 'MIME-Version: 1.0
    Content-Type: multipart/mixed;
        boundary="=_8acd99179245df15889920fa3e2e5b9a"';

Die Boundary kannst du selbst erstellen ( z.B. $boundary =
'_/'.md5(time()).'\_';)
multipart/mixed steht f�r gemischte Inhalte, multipart/alternative f�r
mehrmals derselbe Inhalt in unterschiedlicher Aufbereitung (text, html und
pdf z.B.)
Dann kommt im Body die erste Nachricht:
$message .= '   This is a multipart message in MIME format ';

(Da kann irgendwas stehen, nett ist ein erl�uternder Text f�r clients, die
kein multipart verstehen)

Dann kommen _zwei_ Zeilenschaltungen (CRLF, also \r\n) und der Trenner
angef�hrt von _zwei_ '-', also:

$message .= "\r\n\r\n" . '--' . $boundary . "\r\n";

Dann kommt die Codierung des n�chsten Teiles

$message .= 'Content-Type: image/gif; charset="iso-8859-1"' . "\r\n".
            'Content-Transfer-Encoding: base64' . "\r\n".
            'Content-Disposition: inline; filename="' . $dateiname . '"';

Dabei steht inline f�r 'zeige mir das dokument im Body der nachricht an.
Alternativ kann auch attachmant gew�hlt werden. Dann wird die Datei eben als
anlage eingebunden

Dann kommen wieder zwei CRLF

$message .= "\r\n\r\n";

Und dann kommt der Inhalt des n�chsten Teiles

$message .= base64_encode ( file_get_contents ( $dateiname ) );

Und dann wieder der n�chste Trenner

$message .= "\r\n\r\n" . '--' . $boundary . "\r\n";

und die Schritte zwischen den Trennern kannst du beliebig oft wiederholen.
Du musst nur die entsprechenden Infos bereitstellen (Content-Type etc)

wenn du es noch genauer wissen willst, schau in den RFCs nach
(z.B. hier: http://www.ietf.org/rfc/rfc2045.txt )

hth

Gr��e

Andreas


-- 

wdv Medien & Kommunikation GmbH & Co. OHG
Mediendatenverarbeitung
Andreas Heigl
Siemensstrasse 6
61352 Bad Homburg
Germany
Telefon +49-(0)6172-670-185
Telefax +49-(0)6172-670-181
www.wdv.de


php::bar PHP Wiki   -   Listenarchive