2011-09-03 40 views
6

Wiadomości HTML z osadzonym obrazem w Gmailu - z następującym tekstem e-maila - wypisują dokładnie tekst. Nie pokazuje, co znajduje się wewnątrz znaczników "body".HTML E-mail w Gmailu - osadzanie obrazów

To jest treść maila:

Content-Type: multipart/related; 

boundary="bananarepublic12345" 

This is a multipart message in MIME format. 

--banana12345republic 

Content-Type: text/html; charset=ISO-8859-1 

Content-Transfer-Encoding: 7bit 


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 
     "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <title>testing embedded image</title> 
</head> 
<body bgcolor="#000"> 
    <h1> Testing Embedded Image</h1> 
    <img src="cid:mambo" alt="ALTERNATE TEXT" > 
</body> 
</html> 

--bananarepublic12345 

Content-Type: image/jpeg; name=big-image1.jpg 

Content-Transfer-Encoding: base64 

Content-ID: <mambo> 

Content-Disposition: inline; 

filename="big-image1.jpg" 

/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ...//2Q%3D%3D 

Dokąd idę złego?

Dzięki za wszelkie sugestie!

+0

jak ty generowania pocztę? – itsols

+0

Ręcznie. Próbuję wysłać prostą pocztę z Gmaila, który ma w sobie jeden osadzony obraz. –

Odpowiedz

7

Postępowałem zgodnie z instrukcjami podanymi 4018709 i działało dobrze. Podsumowując, potrzebujesz identyfikatorów treści, aby załącznik był sformatowany jak identyfikatory wiadomości (które z kolei są sformatowane jak adresy e-mail - z @ i domeną) i mają wartość identyfikatora treści w nagłówku części MIME obraz zamknięty w nawiasach ostrych (jak już to robisz).

Więc email próbka może wyglądać następująco:

Date: Fri, 2 Dec 2011 06:57:55 GMT 
Message-Id: <[email protected]> 
Content-Type: multipart/related; boundary="=-blabla"; type="multipart/alternative" 
From: Some sender <[email protected]> 
To: Me <[email protected]> 
Subject: HTML content with embedded images 
MIME-Version: 1.0 

--=-blabla 
Content-Type: text/html; charset="utf-8" 
Content-Transfer-Encoding: quoted-printable 

<html><body> 
<h1>Header</h1> 
<h2><a href=3D"http://geek.co.il">link</a></h2> 
<p> 
<img border=3D"0" = 
src=3D"cid:[email protected]"/> 
<p> 
</body></html> 

--=-blabla 
Content-ID: <[email protected]> 
Content-Disposition: inline; filename="image.png" 
Content-Type: image/png; name="image.png" 
Content-Transfer-Encoding: base64 

iVBORw0KGgoAAAANSUhEUgAAA9YAAAE2CAMAAACz7PorAAADAFBMVEUAAAC9... 
+0

Co robi "3D" po znaku równości w twoim html? – doABarrelRoll721

+1

Jak widać z nagłówków MIME części HTML, część HTML jest kodowana przy użyciu kodowania "notowane-drukowane". Quoted-printable to minimalne kodowanie tekstu, które umożliwia wymuszenie maksymalnej szerokości linii poprzez podział długich linii znakiem '=' (i widać, że jest to używane w wierszu 5 kodu HTML). Jako takie, wszystkie znaki '=' w treści (jak również wszelkie znaki niedrukowalne) muszą być "cytowane" przez zapisanie ich jako '= '. więc 'border =" 0 "' zostaje zakodowane w 'border = 3D" 0 "'. Aby uzyskać więcej informacji, sprawdź RFC 2045. – Guss