Mailinglisten-Archive |
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