Here is a working example of how to send multipart mail messages using Net::SMTP. Code for sending plain text, a plain text file, and a binary image (jpg) are provided.
Hope this helps!
#!/usr/bin/perl
use Net::SMTP;
use strict;
use warnings;
use MIME::Base64 qw( encode_base64 );
#use MIME::Base64 qw( decode_base64 );
my $from = 'from@email.com';
my $to = 'to@email.com';
my $attachBinaryFile= 'test.jpg';
my $attachTextFile = 'test.txt';
my $boundary = 'frontier';
open(DAT, $attachTextFile) || die("Could not open text file!");
my @textFile = <DAT>;
close(DAT);
my $smtp = Net::SMTP->new('your.smtp.com', Timeout => 60) || die("Coul
+d not create SMTP object.");
print "Sending mail\n";
$smtp->mail($from);
$smtp->recipient($to, { SkipBad => 1 });
$smtp->data();
$smtp->datasend("To: $to\n");
$smtp->datasend("From: $from\n");
$smtp->datasend("Subject: Multi part test\n");
$smtp->datasend("MIME-Version: 1.0\n");
$smtp->datasend("Content-type: multipart/mixed;\n\tboundary=\"$boundar
+y\"\n");
$smtp->datasend("\n");
$smtp->datasend("--$boundary\n");
$smtp->datasend("Content-type: text/plain\n");
$smtp->datasend("Content-Disposition: quoted-printable\n");
$smtp->datasend("\nToday\'s files are attached:\n");
$smtp->datasend("\nHave a nice day! :)\n");
$smtp->datasend("--$boundary\n");
$smtp->datasend("Content-Type: application/text; name=\"$attachTextFil
+e\"\n");
$smtp->datasend("Content-Disposition: attachment; filename=\"$attachTe
+xtFile\"\n");
$smtp->datasend("\n");
$smtp->datasend("@textFile\n");
$smtp->datasend("--$boundary\n");
$smtp->datasend("Content-Type: image/jpeg; name=\"$attachBinaryFile\"\
+n");
$smtp->datasend("Content-Transfer-Encoding: base64\n");
$smtp->datasend("Content-Disposition: attachment; filename=\"$attachBi
+naryFile\"\n");
$smtp->datasend("\n");
my $buf;
open(DAT, "../uploads/$attachBinaryFile") || die("Could not open binar
+y file!");
binmode(DAT);
local $/=undef;
while (read(DAT, my $picture, 4096)) {
$buf = &encode_base64( $picture );
$smtp->datasend($buf);
}
close(DAT);
$smtp->datasend("\n");
$smtp->datasend("--$boundary\n");
$smtp->dataend();
$smtp->quit;
print "Mail sent\n";
exit;
A PERL is but bytes arranged under a client's pressure!
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|