how to send HTML / plain text to perl

advertisements

I am new to the perl language , i want to send the content of plain text file and html text in same email. Where i am getting the file content of a text file but my HTML text is not working i.e i am not a bold sentence in my email . can someone explain how can my html tag to work. Below is my full code. P.S: when i remove the line print MAIL "MIME-Version: 1.0" my html tag works but text file is not working (does not prints line by line).

use MIME::Lite;
my $HOME        ='/apps/stephen/data';
my $FILE        ="$HOME/LOG.txt";
my @HTML        =();

 push(@HTML,"<b>To send the content of a file in email</b><br>\12");
 push(@HTML,`cat $FILE`);

&sendMail;

sub sendMail
{
$sub="TEST";
$from='[email protected]';
$to='[email protected]';
open(MAIL, "|/usr/lib/sendmail -t");
        print MAIL "From: $from \12"; print MAIL "To: $to \12";print    MAIL "Cc: $Cc \12";
        print MAIL "Subject: $sub \12";
        print MAIL "MIME-Version: 1.0" ;
        print MAIL "Content-Type: text/html \12";
        print MAIL "Content-Disposition:inline \12";
        print MAIL @HTML;
    close(MAIL);
}


You are preparing to use MIME::Lite but then you forget it all and try to piece together a MIME structure by hand. That's painful and error-prone even if you know exactly what you are doing; you should definitely use a suitable set of library functions instead, to keep your code simple and readable, and focus on the actual task.

The MIME::Lite documentation shows exactly how to do this, right in the second example in the introduction.

Adapted to your stub code,

use MIME::Lite;

use strict;   # always
use warnings; # always

### Create a new multipart message:
$msg = MIME::Lite->new(
    From    => '[email protected]',
    To      => '[email protected]',
    #Cc      => '[email protected], [email protected]',
    Subject => 'TEST your blood pressure with some CAPS LOCK torture',
    Type    => 'multipart/mixed'
);

### Add parts (each "attach" has same arguments as "new"):
$msg->attach(
    Type     => 'text/html',
    Data     => join ('\n', '<b>To see the content of a file in email</b><br/>',
             '<strong><blink><a href="cid:LOG.txt">click here</a></blink></strong>')
);
$msg->attach(
    Type     => 'text/plain',
    Path     => '/apps/stephen/data/LOG.txt',
    Filename => 'LOG.txt',
    Disposition => 'attachment'
);
$msg->send();