Use the very excellent MIME::Entity module to create an HTML email message. The following bit of untested code will build a message with a 'multipart/mixed" content-type which will allow the mail client to decide if it wants to display HTML content or text content. Personally I never open HTML only email (it's almost guaranteed to be spam).
use MIME::Entity; my $msg = MIME::Entity->build( Type => 'multipart/mixed', From => 'me\@domain.com', To => $recipient, Cc => \@cc, Subject => 'the subject', Encoding => '8bit', ); $msg->attach(Data => $text_message, Type => 'text/plain', Encoding => '8bit', ); $msg->attach(Data => $html_message, Type => 'text/html', Encoding => '8bit', ); ### Send it: open MAIL, "| /usr/sbin/sendmail -t -oi -oem" or die "open: $!"; $msg->print(\*MAIL); close MAIL;
Also, if you are sending the same message to all recipients, why are you sending them out separately. Just send out one email to all of them at once. That is what the Cc header is for.
One more note on your last question. You are mixing up the foreach syntax ( foreach (@array) ) with the for syntax ( for (my $i-0; $i < $max; $i++) ). With the foreach example $_ will contain the element that is in the array, not the index of the element. The following achieve the same result:
my @data = ('one', 'two', 'three'); foreach (@data) { print "$_\n"; } for (my $i=0; $i < @data; $i++) { print "$data[$i]\n"; } __output__ one two three one two three
In reply to Re: Sending HTML email and a slightly related 500 error
by cees
in thread Sending HTML email and a slightly related 500 error
by Foncé
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |