Как я могу отладить мою Perl программу Net :: SMTP? - PullRequest
0 голосов
/ 01 ноября 2009

Я создаю приложение, которое отправляет тестовое сообщение на другой адрес электронной почты, программа выполняется без ошибок, но когда я проверяю свою электронную почту, новых сообщений нет, взгляните на мой код:

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;

Ответы [ 4 ]

5 голосов
/ 01 ноября 2009

То, что вы не получили письмо, не означает, что письмо не было отправлено. Возможно, он еще не доставлен, или его доставили и отфильтровали, или многое другое.

Есть много, много вещей, которые могут пойти не так с электронной почтой.

  • Где часть скрипта с предупреждениями и строгим включением, и вы загружаете 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;
0 голосов
/ 11 марта 2011

Просто позвоните:

$smtp->debug(1);

после создания объекта smtp для получения хорошей транскрипции всего сеанса на консоль.

0 голосов
/ 01 ноября 2009

Просто прослушайте трафик, чтобы увидеть, есть ли SMTP-трафик (порт по умолчанию - 25). Если вы видите, что оно есть и соответствует тому, что вы отправили (без ошибок), то с вашим кодом все в порядке. Ваш код не может нести ответственность за то, что происходит после его успешной отправки (250 Ok: в очереди ...).

0 голосов
/ 01 ноября 2009

Я думаю, что это должно быть хорошо

    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;  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...