【发布时间】:2014-08-06 22:45:01
【问题描述】:
我正在开发一个通过 SMTP 发送电子邮件的应用程序。我有一个服务器,它同时支持 SMTP 和 SMTP::TLS。
通过 SMTP 发送有效。代码如下:
#!/usr/bin/perl
use strict;
use warnings;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP ();
use Email::Simple ();
use Email::Simple::Creator ();
my $smtpserver = 'server.com';
my $smtpport = 2525;
my $smtpuser = 'test@server.com';
my $smtppassword = 'secret';
my $transport = Email::Sender::Transport::SMTP->new({
host => $smtpserver,
port => $smtpport,
sasl_username => $smtpuser,
sasl_password => $smtppassword,
});
my $email = Email::Simple->create(
header => [
To => 'my-email@gmail.com',
From => $smtpuser,
Subject => 'Hi!',
],
body => "This is my message\n",
);
sendmail($email, { transport => $transport });
通过 SMTP::TLS 发送不起作用。
#!/usr/bin/perl
use strict;
use warnings;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP::TLS ();
use Email::Simple ();
use Email::Simple::Creator ();
my $smtpserver = 'server.com';
my $smtpport = 465;
my $smtpuser = 'test@server.com';
my $smtppassword = 'secret';
my $transport = Email::Sender::Transport::SMTP::TLS->new({
host => $smtpserver,
port => $smtpport,
username => $smtpuser,
password => $smtppassword,
debug => 1,
});
my $email = Email::Simple->create(
header => [
To => 'my-email@gmail.com',
From => $smtpuser,
Subject => 'Hi!',
],
body => "This is my TLS message\n",
);
sendmail($email, { transport => $transport });
我该如何调试,发生了什么?在Email::Sender::Transport::SMTP 添加debug => 1 后,我收到了调试消息。但是在SMTP::TLS 我不明白。
当前 TLS 版本只是挂起。
【问题讨论】: