Search code examples
phppearmimemail-mime

When using PEAR's Mail_Mime, the text portion doesn't work when attaching HTML images


I'm using the latest version of PEAR mail_mime module and I'm running into a strange issue. When attaching HTML images to the email, the text portion stops working properly. What I mean by "not work properly" is that if I try to view the message as text in Thunderbird (or view the message in PINE), it doesn't display what I have set as the "text" portion of the email; It tries to parse the HTML information in a text readable fashion. Everything in the HTML portion works as expected.

Here's my slimmed down code:

//Headers
$headers['From'] = "[email protected]";
$headers['To'] = "[email protected]";
$headers['Subject'] = "A MIME Email";

//Text Portion
$text = "This is the text portion.";

//HTML Portion
$html = "<html><body><p><img src='image.png' />This is the HTML portion.</p></body></html>";

//Set up the MIME email
$mime = new Mail_mime(array('eol' => "\r\n"));
$mime->setTXTBody($text);
$mime->setHTMLBody($html);
$mime->addHTMLImage("/path/to/image.png", "image/png");

//Prepare the message to be sent
$body = $mime->get();
$headers = $mime->headers($headers);

//Send the message via SMTP
$mail_obj =& Mail::factory('smtp', array('host' => 'smtp.server.com', 'port' => 25));
$mail_obj->send("[email protected]", $headers, $body);

If I comment out the addHTMLImage line, the text portion of the email works as expected and I can see the content I've set for a non-HTML view. However, if I uncomment out the line, the text portion fails. Looking at the source of my message, I can see the text part is always there.

Here is the part of the message source that is relevant to this question:

Date: Thu, 26 May 2011 10:39:24 -0500 (CDT)
From: From Address <[email protected]>
Subject: A MIME Email
To: [email protected]
Message-id: <[email protected]>
MIME-version: 1.0
Content-type: multipart/alternative;
 boundary="=_e107860f353617028a0059317ce51c1f"
Original-recipient: rfc822;[email protected]

--=_e107860f353617028a0059317ce51c1f
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
 charset=ISO-8859-1

This is the text portion.
--=_e107860f353617028a0059317ce51c1f
Content-Type: multipart/related;
 boundary="=_52fd7475fcf0abd310b6a38cd33f5c46"

--=_52fd7475fcf0abd310b6a38cd33f5c46
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
 charset=ISO-8859-1

<html><body><p><img src='cid:3c0db5d0a50b8752771f64048f527338' />This is th=
e HTML portion.</p></body></html>

--=_52fd7475fcf0abd310b6a38cd33f5c46
Content-Transfer-Encoding: base64
Content-ID: <3c0db5d0a50b8752771f64048f527338>
Content-Type: image/png;
 name=background.png
Content-Disposition: inline;
 filename=background.png

iVBORw0KGgoAAAANSUhEUgAAAAEAABOICAYAAABwnAfKAAAAkUlEQVR42u3WSwrAIAwFwND7X9d1
eoHSb9TSzmYQSV5AXCRaa7lEROySJ+8uFd+8q2l73FEdkJNSRgR07q0uuVncJWBY6I9OWy85bKRB
7xo04TN8/vTO0OriziWFvcMCJqTMCui8rj5fuyMz43i1BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAIB/swItzir5J/ImiQAAAABJRU5ErkJggg==
--=_52fd7475fcf0abd310b6a38cd33f5c46--

--=_e107860f353617028a0059317ce51c1f--

I'm at a loss on how to possibly fix this. Any body run into a similar issue or have any suggestions?


Solution

  • it's your mail reader. it hides text mail if HTML mail is enabled. in gmail you can view details or you can check it in a text email only reader