Seite 1 von 2

eMail mit Grafik - wie ?

Verfasst: 12.05.2004 22:30
von wksys
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.

Verfasst: 13.05.2004 07:20
von Fabse
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
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! ;)

Im Outlook ist das anders. Da nimmst du Bilder von der Festplatte. Die werden dirkekt in die Mail eingefügt und bleiben auch da!

Verfasst: 13.05.2004 10:14
von Jensemann
@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.

Verfasst: 13.05.2004 18:41
von Dennis63
@jendmann: Der aktuelle IE kann das aber nicht. Und der Aktuelle Opera auch nicht...

edit: Aber schau Dir mal die GMX Newsletter an. Die haben das auch geschafft...

Grüße
Dennis

Verfasst: 13.05.2004 18:43
von Jensemann
Dennis Böge hat geschrieben:@jendmann: Der aktuelle IE kann das aber nicht. Und der Aktuelle Opera auch nicht...
weia, sowas nennt man also heute browser ...

Verfasst: 16.05.2004 21:07
von wksys
Danke für die Hinweise.

Wie schon erwähnt, funktioniert die bei Selfhtml erwähnte Methode :oops: nicht mit MS IE bzw. Opera.

Trotzdem wars 'mal interessant, mit „base64_decode” und „..encon” herumzufummeln ...

Verfasst: 16.05.2004 22:18
von Pyramide
Ich habe mir mal angeguckt, wie Outlook Express das macht und das in PHP nachgebaut:

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);
Siehe auch: http://www.php4-forum.de/mime_mail.htm

Verfasst: 16.05.2004 22:40
von Jensemann
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.

Verfasst: 17.05.2004 13:41
von Jack9027
bei den mails von gmx is aber auch immer noch ein anhang dabei

Verfasst: 17.05.2004 13:44
von Jensemann
Jack9027 hat geschrieben:bei den mails von gmx is aber auch immer noch ein anhang dabei
ja und?