eMail mit Grafik - wie ?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
wksys
Mitglied
Beiträge: 28
Registriert: 17.08.2003 13:18
Wohnort: Bad Mergentheim

eMail mit Grafik - wie ?

Beitrag 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.
Benutzeravatar
Fabse
Mitglied
Beiträge: 1401
Registriert: 02.06.2003 15:10
Wohnort: Klagenfurt
Kontaktdaten:

Beitrag 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!
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag 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.
Dennis63
Ehemaliges Teammitglied
Beiträge: 2597
Registriert: 02.07.2003 18:46

Beitrag 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
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag 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 ...
wksys
Mitglied
Beiträge: 28
Registriert: 17.08.2003 13:18
Wohnort: Bad Mergentheim

Beitrag 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 ...
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag 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.
Jack9027
Mitglied
Beiträge: 344
Registriert: 05.01.2004 18:46

Beitrag von Jack9027 »

bei den mails von gmx is aber auch immer noch ein anhang dabei
Jensemann
Ehemaliges Teammitglied
Beiträge: 2549
Registriert: 25.02.2002 01:00

Beitrag von Jensemann »

Jack9027 hat geschrieben:bei den mails von gmx is aber auch immer noch ein anhang dabei
ja und?
Antworten

Zurück zu „Coding & Technik“