如何调试Net :: SMTP Perl程序?

Nat*_*pos 0 email perl smtp

我正在构建一个将测试消息发送到另一封电子邮件的应用程序,该程序执行时没有错误,但是当我检查我的电子邮件时没有任何新电子邮件时,请查看我的代码:

my $smtpserver = 'smtp.vix.terra.com.br';
my $smtpuser = 'nathanpc';
my $fromemail = 'nathanpc@terra.com.br';

    my $smtp = Net::SMTP-> new($smtpserver, Timeout => 120);
    $smtp-> mail($smtpuser);
    $smtp-> to('eeepc904@gmail.com');
    $smtp-> data();
    $smtp-> datasend("To: eeepc904\@gmail.com\n");
    $smtp-> datasend("From: nathanpc\@terra.com.br\n");
    $smtp-> datasend("\n");
    $smtp-> datasend("test\n");
    $smtp-> dataend();
    $smtp-> quit;
Run Code Online (Sandbox Code Playgroud)

bri*_*foy 5

仅仅因为你没有收到电子邮件并不意味着没有发送电子邮件.它可能尚未交付,或者已经交付,过滤或许多其他事情.

电子邮件中有许多可能出错的东西.

  • 带有警告和严格启用的脚本部分在哪里,你加载Net :: SMTP?在运行到Stackoverflow之前帮助自己.
  • 为什么不检查您是否能够连接到邮件服务器?
  • 为什么你没有Debug在通话中启用该选项new
  • 有没有警告或错误消息?
  • 通过手动连接到服务器尝试相同的SMTP会话时会发生什么?张贴整个成绩单.

在问这里之前,你可以做很多事情来帮助自己,并且依靠Stackoverflow来解决最基本的问题并不能让你有机会发展自己的技能.

#!perl

use warnings;
use strict;

use Net::SMTP;

my $smtpserver = 'smtp.vix.terra.com.br';
my $smtpuser   = 'nathanpc';
my $fromemail  = 'nathanpc@terra.com.br';

my $smtp = Net::SMTP->new($smtpserver, Timeout => 10, Debug => 1);
die "Could not connect to server!\n" unless $smtp;

$smtp->mail($smtpuser);
$smtp->to('eeepc904@gmail.com');
$smtp->data();
$smtp->datasend("To: eeepc904\@gmail.com\n");
$smtp->datasend("From: $fromemail\n");
$smtp->datasend("\n");
$smtp->datasend("test\n");
$smtp->dataend();
$smtp->quit;