(Perl的净:: SMTP)使用Gmail SMTP服务器认证失败((perl Net::SMTP

2019-09-18 01:20发布

我写了一个perl脚本使用Gmail的SMTP服务器发送电子邮件:smtp.gmail.com -

use Net::SMTP;

my $smtp = Net::SMTP->new('smtp.gmail.com',
                    Port=> 587,
                    Timeout => 20,
                    Hello=>'user@gmail.com'
                    );
print $smtp->domain,"\n";
$sender = "user@gmail.com";
$password = "mypassword";
$smtp->auth ( $sender, $password ) or die "could not authenticate\n";
$receiver = "user@gmail.com";

$subject = "my custom subject";
$smtp->mail($sender);
$smtp->to($receiver);
$smtp->data();
$smtp->datasend("To: <$reciever> \n");
$smtp->datasend("From: <$sender> \n");
$smtp->datasend("Content-Type: text/html \n");
$smtp->datasend("Subject: $subject");
$smtp->datasend("\n");
$smtp->datasend('the body of the email');
$smtp->dataend();
$smtp->quit();
print "done\n\n";

对于“用户”,我有我的Gmail用户名和“输入mypassword”我有密码。 但是,当我运行此代码它停止在自己给AUTH:无法验证。

我能够连接到谷歌的SMTP serever我得到:“mx.google.com”作为的结果:
打印$ SMTP的>域名, “\ n”;

它是什么,我做错了什么? 请帮忙。

Answer 1:

use Net::SMTP;
my $smtp = Net::SMTP->new ....

据我所知,您需要使用加密连接通过Gmail来发送,使用Net :: SMTP :: TLSNet :: SMTP :: SSL(与端口465)

Hello=>'user@gmail.com'

“你好”是不是一个电子邮件地址,把你的主机名,而不是有

$sender = "user@gmail.com";
...
$receiver = "user@gmail.com";

把这些单引号

如果你仍然得到“无法验证。” 请确保您有模块MIME :: Base64的安装和认证介绍:: SASL。

 $smtp->datasend("To: <$reciever> \n");

应该是$接收器 ,而不是$ reciever



Answer 2:

Gmail使用端口587 TLS / STARTTLS,在端口465上SSL 。 请按照通过谷歌SMTP从Perl中发送电子邮件 。 另外,您可以用电子邮件发送:: :: SMTP :: Gmail中 。 我推荐这个,因为它是比较容易的方式使用,并且还有更多的功能。



文章来源: (perl Net::SMTP) authentication failure using gmail smtp server
标签: perl smtp gmail