Link to home
Start Free TrialLog in
Avatar of hSindhu
hSindhu

asked on

MIME::Lite::TT::HTMLProblem - Unable to see HTML images on the mail client

Hi There,

I am using MIME::Lite::TT::HTML Perl module to send an HTML based email. HTML file contains a header image and footer image and the content within. When I send an email using this module, I can see on the mail client only the text content and not the header and footer images.

- I am sure the images are in the same path as the html files is and as well I tried giving absolute path of images in the HTML file as well. But nothing works.

Can some one guide me on what I need to do so that I can see header and footer images when I see the mail in my mail client ?

Thanks
test.pl
----------
 
use strict; 
use warnings; 
use MIME::Lite::TT::HTML; 
 
my %params; 
 
$params{first_name} = 'foo'; 
$params{last_name}  = 'bar'; 
$params{date}    = 'Oct 20, 2008';
 
my %options; 
$options{INCLUDE_PATH} = '/path/to/templates'; 
 
my $msg = MIME::Lite::TT::HTML->new( 
            From        =>  'x@abc.com',
            To          =>  'y@abc.com', 
            Cc          =>  'z@abc.com', 
            Subject     =>  'Your recent purchase', 
            Template    =>  {
                                #text    =>  'text.txt',
                                html    =>  'test.html',
                            },
            TmplOptions =>  \%options, 
            TmplParams  =>  \%params, 
); 
 
$msg->attr("content-type" => "multipart/mixed");
 
 # send the email
MIME::Lite->send('smtp', 'smtp.ss.xyz.com', Timeout => 60);
$msg->send; 
print "Ok!\n";
------------------------------------------------------------------------
 
test.html
----------
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>SPOT Satellite Messenger</title>
<style type="text/css">
<!--
body,td,th {
	font-family:Arial, Helvetica, sans-serif;
	font-size: 12px;
	color: #333333;
}
body {
	margin-left: 0px;
	margin-top: 0px;
}
a {
	color: #333333;
	text-decoration: none;
}
-->
</style>
</head>
 
<body>
<p><img src="/images/header.jpg" width="719" height="91" /></p>
<blockquote>
  <p>Dear [% first_name %],</p>
  <p>Thank you for your continued service with X<br />
    [% date %]
    .</p>
  <p>Thank you,</p>
  <p>Customer Care<br />
  </p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p> </p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
</blockquote>
<p><img src="/images/footer.jpg" width="720" height="44" border="0" usemap="#Map" />
<map name="Map" id="Map"><area shape="rect" coords="572,14,708,34" href="http://www.xyz.com" />
</map></p>
</body>
</html>

Open in new window

Avatar of Tobias
Tobias
Flag of Switzerland image

Hi !

Is one solution :

Tell my it's satisfy to you.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>SPOT Satellite Messenger</title>
<style type="text/css">
<!--
body,td,th {
        font-family:Arial, Helvetica, sans-serif;
        font-size: 12px;
        color: #333333;
}
body {
        margin-left: 0px;
        margin-top: 0px;
}
a {
        color: #333333;
        text-decoration: none;
}
-->
</style>
</head>
 
<body>
<p><img src="http://www.yoursite.com/images/header.jpg" width="719" height="91" /></p>
<blockquote>
  <p>Dear [% first_name %],</p>
  <p>Thank you for your continued service with X<br />
    [% date %]
    .</p>
  <p>Thank you,</p>
  <p>Customer Care<br />
  </p>
  <p> </p>
  <p> </p>
  <p> </p>
  <p> </p>
  <p> </p>
</blockquote>
<p><img src="http://www.yoursite.com/images/footer.jpg" width="720" height="44" border="0" usemap="#Map" />
<map name="Map" id="Map"><area shape="rect" coords="572,14,708,34" href="http://www.xyz.com" />
</map></p>
</body>
</html>
Avatar of hSindhu
hSindhu

ASKER

Hi Shiva,

I was looking for how we can get the images on the email client using use MIME::Lite::TT::HTML; . Is it that you missed the PERL Code? I am only seeing the HTML template. Please let me know. If possible can you paste the full code snippet.

Thanks
Avatar of hSindhu

ASKER

Hi Shiva,

I was looking for how we can get the images on the email client using use MIME::Lite::TT::HTML; . Is it that you missed the PERL Code? I am only seeing the HTML template. Please let me know. If possible can you paste the full code snippet.

Thanks
Hi hSindhu !

Yes I don't have put the Perl code because I don't have change them. You have two solution. First I think is to attach the image in the mail or choose one full link like http://something.com.

I have give you the second solution.


Now is the first :


test.pl
----------
 
use strict;
use warnings;
use MIME::Lite::TT::HTML;
 
my %params;
 
$params{first_name} = 'foo';
$params{last_name}  = 'bar';
$params{date}    = 'Oct 20, 2008';
 
my %options;
$options{INCLUDE_PATH} = '/path/to/templates';
 
my $msg = MIME::Lite::TT::HTML->new(
            From        =>  'x@abc.com',
            To          =>  'y@abc.com',
            Cc          =>  'z@abc.com',
            Subject     =>  'Your recent purchase',
            Template    =>  {
                                #text    =>  'text.txt',
                                html    =>  'test.html',
                            },
            TmplOptions =>  \%options,
            TmplParams  =>  \%params,
);
 
$msg->attr("content-type" => "multipart/mixed");


my $header_path = '/images/header.jpg';

my $footer_path = '/images/footer.jpg';


$msg->attach(  Type        =>  'image/jpeg',
                Path        =>  $header_path,
                Filename    =>  'header.jpg',
                Disposition =>  'attachment'
 );

$msg->attach(  Type        =>  'image/jpeg',
                Path        =>  $footer_path,
                Filename    =>  'footer.jpg',
                Disposition =>  'attachment'
 );

 
 # send the email
MIME::Lite->send('smtp', 'smtp.ss.xyz.com', Timeout => 60);
$msg->send;
print "Ok!\n";


Sorry but i can't try it now. I hope this work.

Best Regards
Avatar of hSindhu

ASKER

Hi Shiva,

Let me try this snippet and I will keep you posted if that worked.

Thanks!
Avatar of hSindhu

ASKER

Hi Shiva,

I dont wish to give a http path for my image files. I want to give an absolute path like Ex: "/home/sin/test" in the code. I tried to test your code and I dont see the images in the email. I just got the images as an attachment in the email. Can you please paste a working code snippet so that I can test it?

Thanks!
ASKER CERTIFIED SOLUTION
Avatar of Tobias
Tobias
Flag of Switzerland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of hSindhu

ASKER

Thanks for your help!