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

Почему вы используете Net :: SMTP вместо того, что не заставляет вас говорить SMTP, например Mail :: Sendmail (ваш предыдущий вопрос) или Email :: Отправить? –

ответ

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 = '[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, чтобы получить хорошую транскрипцию всей сессии на консоли.

Смежные вопросы