Done (but I think that isn't exactly a "really simple solution")!
I have to add this repository:
http://cpan.uwinnipeg.ca/PPMPackages/10xx/
Then I have to install:
Net-SMTP-SSL
Net-SMTP-TSL
Net-SSLeay
IO-Socket-SSL
This code works:
use strict;
use warnings;
use FindBin;
use Net::SMTP::TLS;
use MIME::Lite;
use lib ("$FindBin::Bin/CPAN");
my $msg = MIME::Lite->new(
From => 'me@gmail.com',
To => 'you@gmail.com',
Subject => 'A message with 2 parts...',
Type => 'multipart/mixed',
);
#$msg->attach(
# Type => 'TEXT',
# Data => "Here's the GIF file you wanted",
#);
# $msg->attach(
# Type => 'plain/txt',
# Path => 'Log/output.log',
# Filename => 'output.log',
# );
my $mailer = new Net::SMTP::TLS(
'smtp.gmail.com',
Hello => 'smtp.gmail.com',
Port => 587,
User => 'me@gmail.com',
Password=> 'my-pwd');
$mailer->mail('me@gmail.com');
$mailer->to('you@gmail.com');
$mailer->data;
$mailer->datasend($msg->as_string);
$mailer->dataend;
$mailer->quit;
With this other code, until now, I have an authorization error (I don't know why):
---------------------------
UPDATE: Also the second code below works fine, but you need to install an extra package:
Authen-SASL
So for the code above (TLS way), you need these packages:
Net-SMTP-SSL
Net-SSLeay
IO-Socket-SSL
For the code below (SSL way), you need these packages:
Net-SMTP-SSL
Net-SSLeay
IO-Socket-SSL
Authen-SASL
But any suggestion, in order to have a better code, is still welcome!
---------------------------
use Net::SMTP::SSL;
sub send_mail {
my $to = $_[0];
my $subject = $_[1];
my $body = $_[2];
my $from = 'me@gmail.com';
my $password = 'my_pwd';
my $smtp;
if (not $smtp = Net::SMTP::SSL->new('smtp.gmail.com',
Port => 465,
Debug => 1)) {
die "Could not connect to server\n";
}
$smtp->auth($from, $password)
|| die "Authentication failed!\n";
$smtp->mail($from . "\n");
my @recepients = split(/,/, $to);
foreach my $recp (@recepients) {
$smtp->to($recp . "\n");
}
$smtp->data();
$smtp->datasend("From: " . $from . "\n");
$smtp->datasend("To: " . $to . "\n");
$smtp->datasend("Subject: " . $subject . "\n");
$smtp->datasend("\n");
$smtp->datasend($body . "\n");
$smtp->dataend();
$smtp->quit;
}
# Send away!
&send_mail('you@gmail.com', 'Server just blew up', 'Some more detail')
+;
Any suggestion is welcome!
|