2009-11-01 2 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

왜 Mail :: Sendmail (이전 질문) 또는 Email :: Send와 같이 SMTP를 사용하지 않는 대신 Net :: SMTP를 사용하고 있습니까? –

답변

5

있어야한다고 생각합니다. 그것은 아직 배달되지 않았거나 전달되고 필터링 된 것일 수도 있고 다른 많은 것들이 될 수도 있습니다.

이메일에는 여러 가지 문제가있을 수 있습니다.

  • 경고 및 엄격하게 사용되는 스크립트의 부분은 어디에 있고 Net :: 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

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 : queued ...) 코드가 책임지지 않습니다.

+0

원격 서버이므로 소유자가 아닙니다. –

0

그냥 전화 :

$smtp->debug(1); 

을 콘솔에 전체 세션의 좋은 전사를 얻기 위해 SMTP 객체를 생성 한 후.

관련 문제