amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Multipurpose Internet Mail Extension (MIME) [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

21.11.2007, 06:05 Uhr

Mad_Dog
Posts: 1944
Nutzer
Hallo,

Mein Problem: Ich möchte eine MIME-Email generieren, die aus einer HTML-Datei, sowie mehreren Bildern besteht. Die Bilder sind im HTML-Code angegeben.

Der HTML-Part soll bei allen gängigen email-Providern, wie z.B. gmx, web.de, etc. korrekt dargestellt werden - samt Bildern.

Natürlich habe ich per Google gesucht und auch einiges an Dokumentation gefunden. Aber irgendwas mache ich noch falsch.

Bei Web.de werden meine mails korrekt dargestellt. Bei gmx bekommt man den HTML-Part ohne Bilder zu sehen und die Bilder sind unten als base64-Codierter Text zu sehen.

Momentan sieht der Code der email etwa so aus:

code:
Return-Path: <www-data@host18-233-149-62.serverdedicati.aruba.it>
X-Flags: 1001
Delivered-To: GMX delivery to norman.walter@gmx.net
Received: (qmail invoked by alias); 21 Nov 2007 04:40:16 -0000
Received: from host18-233-149-62.serverdedicati.aruba.it (EHLO host18-233-149-62.serverdedicati.aruba.it) [62.149.233.18]
  by mx0.gmx.net (mx083) with SMTP; 21 Nov 2007 05:40:16 +0100
Received: by host18-233-149-62.serverdedicati.aruba.it (Postfix, from userid 33)
	id 2FC7B7A802A; Wed, 21 Nov 2007 05:33:41 +0100 (CET)
To: norman.walter@gmx.net
Subject: Schi- & Snowboardschule Sport am Jet
MIME-Version: 1.0
Content-Type: multipart/related;
	boundary="CONTENT682155329850585171920463162826";
	type = multipart/alternative
From: sport@amjet.at
Message-Id: <20071121043341.2FC7B7A802A@host18-233-149-62.serverdedicati.aruba.it>
Date: Wed, 21 Nov 2007 05:33:41 +0100 (CET)
X-GMX-Antivirus: -1 (not scanned, may not use virus scanner)
X-GMX-Htest: 0.12,0.06
X-GMX-Antispam: 0 (Mail was not recognized as spam)
X-GMX-UID: hINxfwo7PjlsJrwy2DQ2bUYzMTE2NYko


--CONTENT682155329850585171920463162826
Content-Type: multipart/alternative;
	boundary="CONTENT682155329850585171920463162826"

--CONTENT682155329850585171920463162826
Content-Type: text/html;
	charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Hier kommt der Html-Code...


--CONTENT682155329850585171920463162826--


--CONTENT682155329850585171920463162826 
Content-Type: image/jpeg;
	name="WebMail_01.jpg"
Content-Transfer-Encoding: base64
Content-ID: <WebMail_01>
Content-Disposition:inline; filename="WebMail_01.jpg"

..Hier kommt das 1. Base64 Codierte Bild


--CONTENT682155329850585171920463162826 
Content-Type: image/jpeg;
	name="WebMail_02.jpg"
Content-Transfer-Encoding: base64
Content-ID: <WebMail_02>
Content-Disposition:inline; filename="WebMail_02.jpg"

...Hier kommt das 2. Base64 Codierte Bild

--CONTENT682155329850585171920463162826--


Im Html Code sehen die Image-Tags so aus:

code:
<img style="border: 0px solid ; width: 600px; height: 26px;" src="cid:WebMail_01" hspace="0">


Was mache ich falsch?

--
http://www.norman-interactive.com

[ - Antworten - Zitieren - Direktlink - ]

10.12.2007, 16:05 Uhr

Gazelle
Posts: 151
Nutzer
@Mad_Dog:

The MIME Multipart/Related Content-type

Ich würde mal sagen der erste "Content-Type: multipart/alternative" ist falsch, weil es ja keine Alternative gibt. Außerdem verwendet er den gleichen "boundary" Eintrag wie schon die Mail selbst, was wahrscheinlich zu den genannten Problemen führt.

Entferne einfach:
code:
--CONTENT682155329850585171920463162826
Content-Type: multipart/alternative;
	boundary="CONTENT682155329850585171920463162826"


und das erste Vorkommen von:
code:
--CONTENT682155329850585171920463162826--

(nach dem text/html und vor dem image/jpeg)

dann dürfte es funktionieren.

/edit:
Im Header noch
code:
Content-Type: multipart/related;
	boundary="CONTENT682155329850585171920463162826";
	type = multipart/alternative

auf
code:
Content-Type: multipart/related;
	boundary="CONTENT682155329850585171920463162826";
	type = text/html

stellen.

[ Dieser Beitrag wurde von Gazelle am 11.12.2007 um 13:51 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

17.12.2007, 13:29 Uhr

Mad_Dog
Posts: 1944
Nutzer
@Gazelle:

Ich hab's jetzt so:

Header:

code:
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_MIX_ff0fb2fd365833f450710935166116e0"


Mailbody:

code:
This is a multi-part message in MIME format.

------=_MIX_ff0fb2fd365833f450710935166116e0
Content-Type: multipart/related;
	boundary="----=_REL_7a1d89cceb7746105bc99a82ec276109"

------=_REL_7a1d89cceb7746105bc99a82ec276109
Content-Type: multipart/alternative;
	boundary="----=_ALT_f180c493dba4bde2ed453ddd7f6d8bd4"


------=_ALT_f180c493dba4bde2ed453ddd7f6d8bd4
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Ein kleiner Text...

------=_ALT_f180c493dba4bde2ed453ddd7f6d8bd4
Content-Type: text/html;
Content-Transfer-Encoding: base64
Base64-codierter HTML-Teil

------=_ALT_f180c493dba4bde2ed453ddd7f6d8bd4--

------=_REL_7a1d89cceb7746105bc99a82ec276109 
Content-Type: image/jpeg;
	name="WebMail_01.jpg"
Content-Transfer-Encoding: base64
Content-ID: <bc88a01869b4cb6f4ea11811b5562fae>

1. Bild, Base64-codiert

...weitere Bilder

------=_REL_7a1d89cceb7746105bc99a82ec276109--

------=_MIX_ff0fb2fd365833f450710935166116e0
Content-Type: text/plain; charset="iso-8859-1"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Ein kleiner Text.

------=_MIX_ff0fb2fd365833f450710935166116e0--


Das wird in allen gängigen email-Clients wie Thunderbird, Outlook usw. richtig angezeigt. Auch bei Web.de ist die Darstellung korrekt. Nur GMX macht Probleme. Dort wird zwar der HTML-Teil korrekt angezeigt, allerdings fehlen die Bilder in der Darstellung.

Ich kann mir keinen Reim darauf machen, woran es liegt. Ich habe einen Newsletter des Mabuse-Verlags als vorlage genommen, der in GMX korrekt dargestellt wird (mit eingebetteten Bildern - die Bilder werden nicht von Server nachgeladen).

Und ja: Alle Bilder werden im HTML-Code als cid:blabla angegeben, genau wie in Content-ID festgelegt.

Was mache ich falsch??? Bin Ratlos!

--
http://www.norman-interactive.com

[ - Antworten - Zitieren - Direktlink - ]

17.12.2007, 16:56 Uhr

Gazelle
Posts: 151
Nutzer
@Mad_Dog:

Du könntest eventuell probieren den "alternative" und "related" zu vertauschen, also:

code:
multipart/mixed
   multipart/alternative
      text/plain
      multipart/related
         text/html
         image/jpeg
         image/jpeg
         image/jpeg
   text/plain


Keine Ahnung ob's was bringt.

[ - Antworten - Zitieren - Direktlink - ]

27.12.2007, 11:21 Uhr

Mad_Dog
Posts: 1944
Nutzer
Hallo,

Hier mal zum Vergleich die Mails, wie sie mein Programm produziert:

http://w3.norman-interactive.com/files/Testmail.eml

Und hier die Vorlage für mein Reverse-Engineering (ein Newsletter des Mabuse Verlags):

http://w3.norman-interactive.com/files/Mabuse-Newsletter.eml

Der Unterschied ist eigentlich daß der HTML-Teil bei meiner Mail Base64 codiert ist. Bei Web.de, Thunderbird und Outlook wird alles (mit Bildern) korrekt angezeigt.

Aber der HTML-Teil meiner Mail wird korrekt in GMX angezeigt, nur die Bilder nicht. Der Mabuse-Newsletter wird bei allen Anbietern und Clients korrekt angezeigt.

Ich verzweifel noch an diesem Scheiß.. :nuke:

Hat irgendjemand eine Idee, warum bei meiner Mail die Bilder in GMX nicht korrekt angezeigt werden?

Was mache ich falsch?
--
http://www.norman-interactive.com

[ - Antworten - Zitieren - Direktlink - ]

27.12.2007, 11:59 Uhr

Mad_Dog
Posts: 1944
Nutzer
Hier noch meine Methode (php-Code), die diese Mail zusammenbastelt:
php code:
function prepareEmail()
	{
		// Base64 codierte Bilder generieren
        $this->pictures = $this->template->collectPictureAttatchments("--" . $this->boundary_related);

		// Betreff aus der Datenbank holen
		$this->subject = $this->offer_options->getSubject();

		$this->header = "MIME-Version: 1.0\n";
		$this->header .= "Content-Type: multipart/mixed; ";
		$this->header .= "boundary=\"" . $this->boundary_mixed . "\"\n"; // $this->boundary . "\"\n";
		//$this->header .= "\ttype = multipart/alternative\n";  // Neu!
		//$this->header .= "Content-type: text/html; charset=iso-8859-1\n";
		//$this->header .= "Content-Disposition: inline\n";
		$this->header .= "From: " . $this->client->contact . "\n"; // . "<" . $this->client->company . ">\n"

		$this->mailSource = "This is a multi-part message in MIME format.\n\n";

		$this->mailSource .= "--" . $this->boundary_mixed . "\n" .
							"Content-Type: multipart/related;\n" .
							//"\ttype=\"multipart/alternative\";\n" .
							"\tboundary=\"" . $this->boundary_related . "\"\n" .
							"\n";

		$this->mailSource .= "--" . $this->boundary_related . "\n" .
							"Content-Type: multipart/alternative;\n" .
							"\tboundary=\"" . $this->boundary_alternative . "\"\n" .
							"\n\n";

		$this->mailSource .= "--" . $this->boundary_alternative . "\n" .
							"Content-Type: text/plain;\n" .
							"\tcharset=\"iso-8859-1\"\n" .
							"Content-Transfer-Encoding: quoted-printable" .
							"\n\n";
		$this->mailSource .= $this->client->company . "\n";
        $this->mailSource .= $this->client->street . "\n";
        $this->mailSource .= $this->client->zipcode . " " . $this->client->city . "\n";
        $this->mailSource .= $this->client->country . "\n\n";

		$this->mailSource .= "--" . $this->boundary_alternative . "\n" .
							"Content-Type: text/html;\n" .
							//"\tcharset=\"iso-8859-1\"\n" .
							//"Content-Transfer-Encoding: quoted-printable" .
							"Content-Transfer-Encoding: base64" .
							"\n\n" .
							//$this->template->html_email .
							chunk_split(base64_encode($this->template->html_email)) .
							"\n\n";
		$this->mailSource .= "--" . $this->boundary_alternative . "--\n";

		$this->mailSource .= $this->pictures;
		$this->mailSource .= "\n--" . $this->boundary_related . "--\n\n";

		$this->mailSource .= "--" . $this->boundary_mixed . "\n";
		$this->mailSource .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
        $this->mailSource .= "MIME-Version: 1.0\n";
        $this->mailSource .= "Content-Transfer-Encoding: quoted-printable\n";
        $this->mailSource .= "Content-Disposition: inline\n\n";
        $this->mailSource .= "_______________________________________________\n";
        $this->mailSource .= $this->client->company . "\n";
        $this->mailSource .= $this->client->street . "\n";
        $this->mailSource .= $this->client->zipcode . " " . $this->client->city . "\n";
        $this->mailSource .= $this->client->country . "\n\n";
        $this->mailSource .= "--" . $this->boundary_mixed . "--\n\n";

	}

--
http://www.norman-interactive.com

[ - Antworten - Zitieren - Direktlink - ]

27.12.2007, 14:22 Uhr

Robin
Posts: 1056
Nutzer
@Mad_Dog:

Zitat:
Der Unterschied ist eigentlich daß der HTML-Teil bei meiner Mail Base64 codiert ist. Bei Web.de, Thunderbird und Outlook wird alles (mit Bildern) korrekt angezeigt.

Ich weiss, ist nicht hilfreich aber nicht immer liegt der Fehler
bei einem selbst ;)
Versuch es doch ohne die base64-encodierung.
Vielleicht ist es ja GMX-Mail, das nicht mit deiner, soweit es die anderen Programme betrifft, ja darstellbaren Mail klar kommt.

Edit: Vielleicht schreibst du auch noch einen "Bugreport" an GMX.

--
(Bild) http://my.morphosi.net/
morphos

[ Dieser Beitrag wurde von Robin am 27.12.2007 um 14:24 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

27.12.2007, 15:46 Uhr

Gazelle
Posts: 151
Nutzer
@Mad_Dog:
Einen Unterschied sehe ich noch:
code:
This is a multi-part message in MIME format.

------=_MIX_ff0fb2fd365833f450710935166116e0
Content-Type: multipart/related;
        boundary="----=_REL_7a1d89cceb7746105bc99a82ec276109"

------=_REL_7a1d89cceb7746105bc99a82ec276109
Content-Type: multipart/alternative;
        boundary="----=_ALT_f180c493dba4bde2ed453ddd7f6d8bd4"


versuche es mal mit:
code:
This is a multi-part message in MIME format.

------=_MIX_ff0fb2fd365833f450710935166116e0
Content-Type: multipart/related;
        boundary="----=_REL_7a1d89cceb7746105bc99a82ec276109"

This is a multipart message in MIME format.

------=_REL_7a1d89cceb7746105bc99a82ec276109
Content-Type: multipart/alternative;
        boundary="----=_ALT_f180c493dba4bde2ed453ddd7f6d8bd4"


Ansonsten sehe ich keine Unterschiede.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Multipurpose Internet Mail Extension (MIME) [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2022 by amiga-news.de - alle Rechte vorbehalten.
.