1

我想设置一个基本的电子邮件发件人。这是为了验证我网站上用户的电子邮件,并给他们一个可以点击的令牌。服务器未设置电子邮件。它是一个普通的 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);

但我收到了有关“Gmail 的 Net::SMTP::TLS => 无效 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 帐户有双重身份验证。这对我想要的来说太复杂了。

对于这个简单的任务,推荐的最简单方法是什么?

4

2 回答 2

1

不幸的是,您选择的两个模块都不起作用,您应该使用Net::SMTP::TLS::ButMaintained而不是 Net::SMTP::TLS 和Email::Send::SMTP::Gmail而不是 Email::Send::邮箱。您选择的模块是旧的、未维护的并且已知已损坏。

有时通过模块的 CPAN 页面检查可用的错误报告会有所帮助。

于 2013-04-17T13:32:59.293 回答
1

Email::Send 现已弃用。这对我有用,使用首选的电子邮件::发件人:

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 });
于 2015-09-06T15:16:56.960 回答