我想设置一个基本的电子邮件发件人。这是为了验证我网站上的用户的电子邮件,并给他们一个令牌点击。服务器未设置电子邮件。它是一个普通的ubuntu盒子,我真的不想运行邮件服务器,部分是因为我不想让另一个开放端口担心。我也希望编程简单,避免垃圾邮件过滤器。
首先,我尝试了Gmail。
use Net::SMTP::TLS;
my $mailer = new Net::SMTP::TLS( 'smtp.gmail.com',
Hello => 'smtp.gmail.com',
Port => 587,
User => $me2,
Password=> $pw);
但是我抱怨'Net :: SMTP :: TLS for Gmail =>无效的SSL_version'。
然后我尝试了Email :: Send :: Gmail。
my $email_address = $me;
($me =~ /^[\w\-_\.]+\@[\w\-_\.]+$/) or die "$email_address is invalid";
use Email::Send;
use Email::Send::Gmail;
use Email::Simple::Creator;
my $email = Email::Simple->create(
header => [
From => $me,
To => $me,
Subject => 'Testing',
],
body => 'Testing email sending with perl.',
);
my $sender = Email::Send->new(
{ mailer => 'Gmail',
mailer_args => [
username => $me2,
password => $pw,
]
}
);
eval { $sender->send($email) };
die "Error sending email: $@" if $@;
这个人抱怨说不推荐使用Return :: Value。然后,它失败了 - 可能是因为我的gmail帐户上有双因素身份验证。这对我想要的东西来说太复杂了。
对于这个简单的任务,推荐的最简单方法是什么?
答案 0 :(得分:1)
您选择的两个模块都不能正常工作,您应该使用Net::SMTP::TLS::ButMaintained而不是Net :: SMTP :: TLS和Email::Send::SMTP::Gmail而不是Email :: Send :: Gmail。您选择的模块是旧的,没有维护,并且已知会被破坏。
有时通过模块的CPAN页面检查可用的错误报告会有所帮助。
答案 1 :(得分:1)
电子邮件::发送现已弃用。这适用于我,使用首选的Email :: Sender:
use strict;
use warnings;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTPS ();
use Email::Simple ();
use Email::Simple::Creator ();
my $smtpserver = 'server';
my $smtpport = 587;
my $smtpuser = 'username';
my $smtppassword = 'password';
my $transport = Email::Sender::Transport::SMTPS->new({
host => $smtpserver,
port => $smtpport,
ssl => "starttls",
sasl_username => $smtpuser,
sasl_password => $smtppassword,
});
my $email = Email::Simple->create(
header => [
To => 'mymail@gmail.com',
From => 'sender@example.com',
Subject => 'Hi!',
],
body => "This is my message\n",
);
sendmail($email, { transport => $transport });