我的主机没有任何更高的电子邮件模块,所以我宁愿让这个工作没有额外的模块。
我试过使用google smtp服务器(我在XAMPP中使用\sendmail,但从未通过Net::SMTP),我试过secureserver.net smtp服务器。有和没有SSL,有和没有Hello线路,端口465或25。尝试从我的本地XAMPP服务器运行禁用了所有防火墙,尝试在goDaddy服务器上远程运行。
似乎是超时和'smtp failed'. never getting to '.'即使没有 unless($smtp) 测试.无法通过auth,但由于'smtp failed'被解雇我假设它是一个问题,我如何形成对象的初始声明?虽然我已经尝试了几种不同的方法,我没有得到任何实际的服务器错误.
my $smtp = Net::SMTP->new($smtpserver,
SSL => 1,
Timeout => 60,
Port => $smtpport, # tried 25 and 465
Debug => 1
);
unless($smtp) { #tried with and without this
print "smtp failed<br>[".$!."]<br>and<br>".$IO::Socket::SSL::SSL_ERROR;
}
$smtp->auth($smtpuser, $smtppassword); #nothing under this line is done
$smtp->mail($smtpuser); #but i have checked and double checked the data
$smtp->recipient($recipi); #pointed to several email addys but never arrive
$smtp->data();
$smtp->datasend("From: $smtpuser");
$smtp->datasend("To: $recipi");
$smtp->datasend("Subject: test mail ver six sm loc 12");
$smtp->datasend("\n");
$smtp->datasend("blah blah");
$smtp->dataend();
$smtp->quit;
print"..."; #never gets printed
任何建议欢迎,唯一的事情我已经想到,* 没有 * 尝试是包括在初始对象减速认证,我找不到任何地方,显示如何做到这一点。
编辑;加 $!和$IO::Socket::SSL::SSL_ERROR Steffen建议结果是$!= [Bad file descriptor]和$IO::Socket::SSL::SSL_ERROR不返回任何内容。
4条答案
按热度按时间9lowa7mx1#
尝试以下代码(它需要Auten::SASL模块,该模块可能不是您设置的一部分)
jm81lzqq2#
Authen::SASL(最后更新2012)似乎不需要这些天.我不知道为什么.
这段代码足以发送到Gmail:
这是对前面的答案的修改,带有方法解释注解,并且没有过多的代码,例如SSL模块和带有空字符串的
datasend
。g6ll5ycj3#
我使用这个代码:
u91tlkcl4#
这是我的看法。不确定我的依赖性是否足够低。
IO::Socket::SSL
,MIME::Base64
和Authen::SASL
是Net::SMTP
的依赖性。Email::Simple
.我认为使用这个模块会更简单。如果你想要显式TLS:
更完整的再现here .