eMail mit Grafik - wie ?
eMail mit Grafik - wie ?
Auf meinem Server habe ich PHP 4.x, MySQL 2.5.3.
Problem:
Mit „mailto” versende ich eMails an einen (definierten) Benutzerkreis, also kein „spam”.
Ich benutze dazu die PHP-Funktion „mailto()”.
In meinen eMails bette ich auch Grafiken ein, mit einem „html”-Befehl („<img src='http://www.mydomain.tld/bild.gif'>”. Soweit ist das kein Problemn. Die eMail zusammen mit dem Bild „kommt an”, der Empfänger kann es sehen.
Aber er sieht es nur dann, wenn er „online” ist. Nur dann hat er ja eine Verbindung zur im IMG-tag angegebenen Adresse.
Mit anderen Worten: das Bild in der eMail ist nur dann zu sehen, wenn man online ist.
Ist man „offline”, gibt's kein Bild.
Das ist natürlich häßlich.
Andererseits: sende ich eine eMail mit z.B. Outlook oder mit Netscape eMail, so sind die Bilder in der eMail enthalten und damit auch sichtbar, und zwar auch dann, wenn der Empfänger offline ist. Ich bin aber nicht dahintergekommen, wie die das machen.
MEINE FRAGE ist nun:
wie verwirkliche ich das unter PHP ? Also, wie erreiche ich, daß das Bild zusammen mit der eMail gesendet wird, und damit auch dann sichtbar ist, wenn der Enpfänger der eMail „offline” ist ?
Es ist mir klar, daß eine eMail mit dem Bild entsprechend größer wird, aber das ist nicht (das hier angesprochene) Problem.
Für jede Antwort ist dankbar:
wksys.
Problem:
Mit „mailto” versende ich eMails an einen (definierten) Benutzerkreis, also kein „spam”.
Ich benutze dazu die PHP-Funktion „mailto()”.
In meinen eMails bette ich auch Grafiken ein, mit einem „html”-Befehl („<img src='http://www.mydomain.tld/bild.gif'>”. Soweit ist das kein Problemn. Die eMail zusammen mit dem Bild „kommt an”, der Empfänger kann es sehen.
Aber er sieht es nur dann, wenn er „online” ist. Nur dann hat er ja eine Verbindung zur im IMG-tag angegebenen Adresse.
Mit anderen Worten: das Bild in der eMail ist nur dann zu sehen, wenn man online ist.
Ist man „offline”, gibt's kein Bild.
Das ist natürlich häßlich.
Andererseits: sende ich eine eMail mit z.B. Outlook oder mit Netscape eMail, so sind die Bilder in der eMail enthalten und damit auch sichtbar, und zwar auch dann, wenn der Empfänger offline ist. Ich bin aber nicht dahintergekommen, wie die das machen.
MEINE FRAGE ist nun:
wie verwirkliche ich das unter PHP ? Also, wie erreiche ich, daß das Bild zusammen mit der eMail gesendet wird, und damit auch dann sichtbar ist, wenn der Enpfänger der eMail „offline” ist ?
Es ist mir klar, daß eine eMail mit dem Bild entsprechend größer wird, aber das ist nicht (das hier angesprochene) Problem.
Für jede Antwort ist dankbar:
wksys.
Das ist klar! Wenn du mit ein Bild von einer Adresse lädst dann dann der Empänger die Bilder nur sehen wenn er online ist. Das ist doch ganz klar! Das wäre das gleiche wenn du offline bist und sufern willst!Aber er sieht es nur dann, wenn er „online” ist. Nur dann hat er ja eine Verbindung zur im IMG-tag angegebenen Adresse.
Mit anderen Worten: das Bild in der eMail ist nur dann zu sehen, wenn man online ist.
Ist man „offline”, gibt's kein Bild.
Das ist natürlich häßlich.
Andererseits: sende ich eine eMail mit z.B. Outlook oder mit Netscape eMail, so sind die Bilder in der eMail enthalten und damit auch sichtbar, und zwar auch dann, wenn der Empfänger offline ist. Ich bin aber nicht dahintergekommen, wie die das machen

Im Outlook ist das anders. Da nimmst du Bilder von der Festplatte. Die werden dirkekt in die Mail eingefügt und bleiben auch da!
@wksys
Wir sprechen also von HTML Mails, ok, den normalen weg eine Grafik zu attachen (base64 codiert, im Mime Container) können wir schonmal knicken, da so eine Adressierung über HTML nicht machbar ist.
Was aber machbar sein sollte ist dieses:
http://selfaktuell.teamone.de/artikel/g ... /index.htm
Hier wird die Grafik direkt als base64 data ins img tag gehauen, aber lies selbst.
Dazu sollte noch:
http://de3.php.net/manual/de/function.base64-encode.php
nützlich sein.
Wir sprechen also von HTML Mails, ok, den normalen weg eine Grafik zu attachen (base64 codiert, im Mime Container) können wir schonmal knicken, da so eine Adressierung über HTML nicht machbar ist.
Was aber machbar sein sollte ist dieses:
http://selfaktuell.teamone.de/artikel/g ... /index.htm
Hier wird die Grafik direkt als base64 data ins img tag gehauen, aber lies selbst.
Dazu sollte noch:
http://de3.php.net/manual/de/function.base64-encode.php
nützlich sein.
Ich habe mir mal angeguckt, wie Outlook Express das macht und das in PHP nachgebaut:
Siehe auch: http://www.php4-forum.de/mime_mail.htm
Code: Alles auswählen
$boundary = md5(uniqid(time()));
$headers = "From: absender@ich.de
MIME-Version: 1.0
Content-Type: multipart/related; boundary=$boundary";
$mail = "MIME-Mail.
--$boundary
Content-Type: text/html
<html>
<head></head>
<body>
<h1>Bild in der Mail</h1>
<img src=\"cid:meinbild\">
</body>
</html>
--$boundary
Content-Type: image/png; name=\"meinbild.png\"
Content-ID: <meinbild>
Content-Transfer-Encoding: base64
" . chunk_split(base64_encode(file_get_contents('meinbild.png')));
mail('empfaenger@du.de', 'Bild in der Mail', $mail, $headers);
hmm, und das lässt sich wirklich so adressieren? Bei meinen Tests mit kmail ging das nämlich nicht, könnte aber auch eine einstellung gewesen sein, hab nich genauer nachgeschaut.
Ich würde aber empfehlen die addy im From: bzw. To: immer in <> zu setzen, dies ist in diesem beispiel gemäß RFC 822 optional, wenn du einen Namen oder so hinzufügen willst ist dies aber Pflicht.
Interessant wenn man sowas machen will ist auf jedenfall eine Lektüre der unterschiedlichen multipart/* typen.
Ich würde aber empfehlen die addy im From: bzw. To: immer in <> zu setzen, dies ist in diesem beispiel gemäß RFC 822 optional, wenn du einen Namen oder so hinzufügen willst ist dies aber Pflicht.
Interessant wenn man sowas machen will ist auf jedenfall eine Lektüre der unterschiedlichen multipart/* typen.