2009-11-01 28 views
0

我建立发送一个测试邮件到另一个电子邮件应用程序,该程序的执行没有错误,但是当我检查我的电子邮件没有任何新的电子邮件,看看我的代码:如何调试我的Net :: SMTP Perl程序?

my $smtpserver = 'smtp.vix.terra.com.br'; 
my $smtpuser = 'nathanpc'; 
my $fromemail = '[email protected]'; 

    my $smtp = Net::SMTP-> new($smtpserver, Timeout => 120); 
    $smtp-> mail($smtpuser); 
    $smtp-> to('[email protected]'); 
    $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; 
+2

为什么你使用Net :: SMTP而不是让你说SMTP,比如Mail :: Sendmail(你以前的问题)或Email :: Send? – 2009-11-01 16:16:09

回答

5

只是因为你没有得到的电子邮件并不意味着邮件没有发送。它可能还没有交付,或者它已交付并被过滤,或许多其他事情。

电子邮件有很多很多东西可能会出错。

  • 哪里是警告和严格启用脚本的部分,你加载网络:: SMTP?在运行到Stackoverflow之前帮助你自己。
  • 为什么你不检查你能够连接到邮件服务器?
  • 为什么你没有在拨打new的电话中启用Debug选项?
  • 是否有任何警告或错误信息?
  • 当您通过手动连接到服务器尝试相同的SMTP会话时会发生什么?张贴整个笔录。

在问这里之前,你可以做很多事情来帮助自己,即使是最基本的问题依靠Stackoverflow也没有给你一个开发自己技能的机会。

 
#!perl 

use warnings; 
use strict; 

use Net::SMTP; 

my $smtpserver = 'smtp.vix.terra.com.br'; 
my $smtpuser = 'nathanpc'; 
my $fromemail = '[email protected]'; 

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

$smtp->mail($smtpuser); 
$smtp->to('[email protected]'); 
$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; 
+0

使你的代码适合我的电子邮件协调工作..(我的$ smptuser是一个完全合格的名称,虽然) – lexu 2009-11-01 16:44:55

0

我想这应该是罚款

use Net::SMTP;       # includes NET:SMTP Moduls 

$mailServer = "mail.server.com";  # Name of SMTP Servers. 

$nachricht = "nachricht.txt";   # Message 
$absender = "absender\@hier.com"; # Sender Email Adress. 
$betreff  = "Neue Nachricht";  # Subject 
$empfaenger = "empfaenger\@dort.com"; # reciver Email Adress 



$smtp = Net::SMTP->new($mailServer); # Create New SMTP Objekt. 
             # Parameter is the Name of SMTP 
             # Server. 

$smtp->mail($absender);     

$smtp->to($empfaenger);     
             . 

$smtp->data();       

$smtp->datasend("Subject: $betreff\n"); 

$smtp->datasend("To: $empfaenger\n"); 

$smtp->datasend("\n");     

close MESSAGE; 

$smtp->dataend(); 

$smtp->quit; 
0

只是嗅探流量,看看是否有任何SMTP流量(默认端口是25)。如果你看到了,并且它与你发送的内容相对应(没有错误),那么就你的代码而言,你没有问题。您的代码无法对成功发送后发生的情况负责(250 OK:排队...)。

+0

这是一个远程服务器,请记住,我不是所有者。 – 2009-11-01 17:20:38

0

只要致电:

$smtp->debug(1); 

创建SMTP对象来获取整个会议的不错转录到控制台后。