SO。
我无法从我的Perl脚本发送邮件。这就是我的代码:
use Net::SMTP;
$smtp = Net::SMTP->new("smtpserver.mydomain.com");
$smtp->mail("myemail\@mydomain.com");
$smtp->to("myemail\@mydomain.com");
$smtp->data();
$smtp->datasend("From: myemail\@mydomain.com\n");
$smtp->datasend("To: myemail\@mydomain.com\n");
$smtp->datasend("Subject: Test message\n");
$smtp->datasend("Just a test message.\n");
$smtp->dataend();
$smtp->quit;
这是调试选项抛出的内容:
Net::SMTP>>> Net::SMTP(2.31)
Net::SMTP>>> Net::Cmd(2.29)
Net::SMTP>>> Exporter(5.64_03)
Net::SMTP>>> IO::Socket::INET(1.31)
Net::SMTP>>> IO::Socket(1.32)
Net::SMTP>>> IO::Handle(1.31)
Net::SMTP=GLOB(0x1d1a06c)<<< 220 ESMTP Postfix
Net::SMTP=GLOB(0x1d1a06c)>>> EHLO localhost.localdomain
Net::SMTP=GLOB(0x1d1a06c)<<< 250-
Net::SMTP=GLOB(0x1d1a06c)<<< 250-PIPELINING
Net::SMTP=GLOB(0x1d1a06c)<<< 250-SIZE
Net::SMTP=GLOB(0x1d1a06c)<<< 250-ETRN
Net::SMTP=GLOB(0x1d1a06c)<<< 250-STARTTLS
Net::SMTP=GLOB(0x1d1a06c)<<< 250-ENHANCEDSTATUSCODES
Net::SMTP=GLOB(0x1d1a06c)<<< 250-8BITMIME
Net::SMTP=GLOB(0x1d1a06c)<<< 250 DSN
Net::SMTP=GLOB(0x1d1a06c)>>> MAIL FROM:<myemail@mydomain.com>
Net::SMTP=GLOB(0x1d1a06c)<<< 250 2.1.0 Ok
Net::SMTP=GLOB(0x1d1a06c)>>> RCPT TO:<myemail@mydomain.com>
Net::SMTP=GLOB(0x1d1a06c)<<< 450 4.7.1 <localhost.localdomain>: Helo command rejected: Service temporarily unavailable
Net::SMTP=GLOB(0x1d1a06c)>>> DATA
Net::SMTP=GLOB(0x1d1a06c)<<< 554 5.5.1 Error: no valid recipients
Net::SMTP=GLOB(0x1d1a06c)>>> From: myemail@mydomain.com
Net::SMTP=GLOB(0x1d1a06c)>>> To: myemail@mydomain.com
Net::SMTP=GLOB(0x1d1a06c)>>> Subject: Test message
Net::SMTP=GLOB(0x1d1a06c)>>> Just a test message.
Net::SMTP=GLOB(0x1d1a06c)>>> .
Net::SMTP=GLOB(0x1d1a06c)<<< 221 2.7.0 Error: I can break rules, too. Goodbye.
Net::SMTP=GLOB(0x1d1a06c)>>> QUIT
有趣的是,当我直接与它通话时,SMTP服务器回复250 OK,我收到邮件就好了:
220 ESMTP Postfix
MAIL FROM:<myemail@mydomain.com>
250 2.1.0 Ok
RCPT TO:<myemail@mydomain.com>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Just a test message.
.
250 2.0.0 Ok: queued as B68672C02B
有人有光照吗?
提前致谢。
答案 0 :(得分:2)
只需将此作为答案发布,以便可以根据triplee的要求将其作为答案接受。
您的域名设置可能有问题。
还添加$ smtp-&gt; datasend(“\ n”);在$ smtp-&gt; datasend(“Subject:Test message \ n”)下面;在新行中,否则它不会显示消息文本。
像这样。 $smtp->datasend("Subject: Test message\n");
$smtp->datasend("\n");
$smtp->datasend("Just a test message.\n");
答案 1 :(得分:1)
SMTP服务器(后缀)“不喜欢”EHLO
命令中使用的主机名,但拒绝回复RCPT TO:
命令。
>>> MAIL FROM:<myemail@mydomain.com>
<<< 250 2.1.0 Ok
....
>>> RCPT TO:<myemail@mydomain.com>
<<< 450 4.7.1 <localhost.localdomain>: Helo command rejected: Service temporarily unavailable
您可以通过将HELO
参数传递给EHLO
,使Net :: SMTP在Hello
/ new
命令中使用其他主机名。
$smtp = Net::SMTP->new('smtpserver.mydomain.com', Hello => 'host.example.net');