将 Net::SMTP::TLS 与 Amazon 的简单电子邮件服务结合使用

将 Net::SMTP::TLS 与 Amazon 的简单电子邮件服务结合使用

多年来,我一直使用 Net::SMTP::TLS 在我的网络应用程序中通过 Google 电子邮件发送密码重置电子邮件。

my $smtp = Net::SMTP::TLS->new(email-smtp.us-east-1.amazonaws.com,
                                    Hello => ,
                                    Port => 587,
                                    Timeout => 10,
                                    Debug   => 0,
                                    User => [email protected],
                                    Password => password123,
#                                   NoTLS => !$gsmtpssl,
#                                   Blocking => $blocking,
                                    ) or $c = 1;

            print "TLS returned: $c,$smtp\n";

我已改用 Amazon 的简单电子邮件服务。如 AWS 文档中所述,我用来发送邮件的电子邮件地址已通过 Amazon SES 验证。在 AWS 控制台中,我必须创建已加密的 SMTP 凭证。如果我错了,请纠正我,为了从 AWS 简单电子邮件服务中已验证的电子邮件地址发送电子邮件,我需要 SMTP 用户名、SMTP 密码、SMTP 服务器名称和 SMTP 端口。我能够获得这些。

       smtpuser abc
       smtppassword 123456 
       email-smtp.us-east-1.amazonaws.com

但我想使用[email protected]亚马逊提供给我的 smtp 凭证发送电子邮件,但它不起作用。

#!/usr/bin/perl -w 
use strict;
use Data::Dumper;
use Net::SMTP::TLS;
my $mailer = new Net::SMTP::TLS(
   'email-smtp.us-east-1.amazonaws.com',
   Hello   =>      'World',
   Port    =>      587, #redundant
   User    =>      'abc',
   Password=>      '123456');
print Dumper($mailer);
$mailer->mail('[email protected]');
$mailer->to('[email protected]');
$mailer->data;
$mailer->datasend("Sent thru TLS!");
$mailer->dataend;
$mailer->quit;

答案1

Perl Net::SMTP -STARTTLS通过AUTH端口 587 (msa)

使用Net::SMTP。其3.00以上版本支持STARTTLSSMTP命令。

#!/usr/bin/perl
use strict;
use warnings;

use Net::SMTP;
my $user=  'abc';
my $pass=  '123456';
my $mailer = new Net::SMTP(
   'email-smtp.us-east-1.amazonaws.com',
   Port    =>   587,
   Debug   =>  1, # needed only during debugging
);
if( $mailer ) {
  my $ok;
  $mailer->starttls() &&
  $mailer->auth( $user, $pass) &&
  $mailer->mail('[email protected]') &&
  $mailer->to('[email protected]') &&
  $mailer->data() &&
  $mailer->datasend(<<"END") &&
From: [email protected]
To:  [email protected]
Subject: Delivery Test

Delivery test.
END
  $mailer->dataend &&
  $ok = 1;
  $mailer->quit;
}

相关内容