2012-04-10 4 views
1

Ich kann keine Mail mit MIME :: Lite senden. Beim Senden von meinem Desktop werden die folgenden Fehler angezeigt. Fehler: "SMTP konnte keine Verbindung zum Mailserver herstellen: Fehlerhafter Dateideskriptor"Mail per Perl kann nicht gesendet werden Mime :: Lite

Ich verwende den unten genannten Code.

use strict; 
use MIME::Lite; 
use Net::SMTP; 

my $from_address = "[email protected]"; 
my $to_address = "[email protected]"; 
my $cc_address = "[email protected]"; 
my $subject = "Test mail"; 
my $message_body = "Madhan test mail"; 
my $namer="madhankumar"; 
my $regards="Madhan M"; 

print " Sending mail from $from_address to $to_address \n"; 
my $person_name=ucfirst($namer).","; 
my $mail_host = 'mail1.somehost.com'; 


my $msg = MIME::Lite->new (
    From => $from_address, 
    To => $to_address, 
    Cc => $cc_address, 
    Subject => $subject, 
    Type =>'multipart/mixed' 
) or die "Error creating multipart container: $!\n"; 

$msg->attach (
    Type => 'TEXT', 
    Data => "Dear $person_name\n\n".$message_body."\n\nRegards,\n$regards" 
) or die "Error adding the text message part: $!\n"; 

MIME::Lite->send('smtp', $mail_host, Timeout=>60); 
    $msg->send; 

Der obige Code funktioniert einwandfrei, während der Mailserver mit LAN verbunden ist. Während Sie den Code in Remote-System hat der Fehler unter

"SMTP Failed to connect to mail server: Bad file descriptor". 

wie erwähnt in geworfen Kann ich kenne den Grund .. Ist der Code läuft in Remote-System. Wenn nicht, was sind die Änderung, die ich den Code gemacht haben .. Bitte teilen Sie Ihre Lösungen ....

Vielen Dank im Voraus ...

Anmerkung: Ich entwickle dies in Windows XP

+0

Da es nur in Ihrem LAN funktioniert, sind Sie sicher, dass '$ mail_host' von beiden erreichbar ist? Kannst du es anpingen? Können Sie eine Verbindung zu Port 25 herstellen? – Matteo

+0

Im LAN pingt der Host. Ich habe das Remote-System nicht eingecheckt. Wie kann ich Port einstellen? Muss ich den eingehenden Port und den ausgehenden Port festlegen, während der Code in der Ferne ausgeführt wird? Wenn ja, bitte führe mich, wie man für das gleiche vorgeht – Madhan

+1

SMTP verwendet Port 25. Dies bedeutet, dass Sie Port 25 auf dem SMTP-Server erreichen können. Sie sollten Ihre Firewall-Einstellungen überprüfen. – Matteo

Antwort

6

Die Variablen nicht enthalten, was Sie denken, dass sie enthalten. Hätten Sie Warnungen eingeschaltet, hätten Sie dies selbst bemerkt.

$ perl -e'use warnings; my $from_address = "[email protected]";' 
Possible unintended interpolation of @host in string at -e line 1. 
Name "main::host" used only once: possible typo at -e line 1. 

Die Abhilfe besteht darin, einfache Trennzeichen zu verwenden, um diese Zeichenfolgen zu begrenzen.

Verwandte Themen