我已经将这个脚本通过gmail smtp发送到我的Gmail帐户了。它没有工作,并提供已经提到的错误?
use Net::SMTP::TLS;
my $mailer = new Net::SMTP::TLS(
'smtp.gmail.com',
Hello => 'smtp.gmail.com',
Port => 587,
User => 'cetranger@gmail.com',
Password=> 'xxxxxx');
$mailer->mail('cetranger@gmail.com');
$mailer->to('cetranger@gmail.com');
$mailer->data;
$mailer->datasend("Sent from perl!");
$mailer->dataend;
$mailer->quit;
答案 0 :(得分:3)
试试这个:
use strict;
use warnings;
use Email::Simple;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP::TLS;
my $transport = Email::Sender::Transport::SMTP::TLS->new(
host => 'smtp.gmail.com',
port => 587,
username => 'cetranger@gmail.com',
password => 'xxxxxx'
);
my $message = Email::Simple->create(
header => [
From => 'cetranger@gmail.com',
To => 'cetranger@gmail.com',
Subject => 'Sent from perl!',
],
body => 'Sent from perl!',
);
sendmail( $message, {transport => $transport} );
答案 1 :(得分:1)
此脚本应该可以正常工作(我已成功使用自己的gmail帐户进行测试)。
我怀疑你之间有一些防火墙阻止你连接到gmail。
你可以试试主持人telnet smtp.gmail.com 587
吗?你应该有类似的东西:
host$ telnet smtp.gmail.com 587
Trying 173.194.67.108...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP da8sm6658151wib.6
如果您没有最后3行,则表示您无法直接连接到gmail服务器。然后检查您自己的防火墙设置(如果有的话)。