2017-08-09 146 views
0

對於Perl編程來說,我還算陌生。我在使用MIME :: Lite的基本SMTP上需要幫助,我已經下載了該庫並將其放在該文件夾中。 這裏是我的代碼Perl電子郵件功能Mime :: Lite

#!/usr/bin/perl 

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

$to = '[email protected]'; 
$cc = '[email protected]'; 
$from = '[email protected]'; 
$pass = "my password here"; 
$subject = 'Test Email'; 
$message = 'This is test email sent by Perl Script'; 

$msg = MIME::Lite->new(
       From  => $from, 
       To  => $to, 
       Cc  => $cc, 
       Subject => $subject, 
       Data  => $message 
       ); 

# MIME::Lite->send('smtp', "smtp.gmail.com"); 
MIME::Lite->send('smtp', "smtp.gmail.com", Timeout=>60,Auth=>'LOGIN',AuthUser=>$from,AuthPass=>$pass,Port => 465, Debug => 1); 
$msg->send; 
print "Email Sent Successfully\n"; 

我得到的錯誤:

MIME::LITE::SMTP>>> MIME::LITE::SMTP 
MIME::LITE::SMTP>>> NET::SMTP(3.10) 
MIME::LITE::SMTP>>> NET::CMD(3.10) 
MIME::LITE::SMTP>>> EXPORTER(5.72) 
MIME::LITE::SMTP>>> IO::SOCKET::IP(0.39) 
MIME::LITE::SMTP>>> IO::SOCKET(1.38) 
MIME::LITE::SMTP>>> IO::HANDLE(1.36) 
MIME::LITE::SMTP>>> NET::CMD::GETLINE(): UNEXPECTED EOF ON COMMAND CHANNEL: AT C:/STRAWBERRY/PERL/LIBE/MIME/LITE.PM LINE 2622 AT MAIN.PL LINE 23 
SMTP FAILED TO CONNECT TO MAIL SERVER: BAD FILE DESCRIPTOR AT LINE 23 

我失去了一些東西在這裏?我看到了教程,它正在爲他們工作。

+0

https://stackoverflow.com/questions/27635906/why-do-i-get-smtp-failed-to-connect-to-mail-server-when-i-try-to-send- an-emai –

+0

我永遠不會理解爲什麼人們使用[即使當前的維護者](https://metacpan.org/pod/MIME::Lite#WAIT!)建議不要使用的模塊。 –

+0

@DaveCross也許不知道?他們似乎正在從一個過時的教程工作。 – zdim

回答

1

感謝大家的建議。因此,由於Mime :: lite不太好,我改變了我的方法到Net :: SMTP。以下是我的代碼,供將來參考。

另外請注意,我無法使它適用於谷歌,但我們自己的smtp服務器正常工作的代碼。

#!perl 
use warnings; 
use strict; 
use Net::SMTP; 

my $smtpserver = 'mail server'; 
my $smtpport = 'port' ; 
my $smtpuser = '[email protected]'; 
my $smtppassword = 'my password'; 


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

$smtp->auth($smtpuser, $smtppassword); 
$smtp->mail('[email protected]'); 
$smtp->to('[email protected]'); 

$smtp->data(); 
$smtp->datasend("To: receiver name <receiver\@sample.com>\n"); 
$smtp->datasend("From: sender name <sender\@sample.com>\n"); 
$smtp->datasend("subject: THIS IS A SUBJECT\n"); 
$smtp->datasend("\n"); 
$smtp->datasend("A simple test message\n"); 

$smtp->quit; 
+1

我想知道爲什麼你到達'MIME :: Lite',並不知道它認爲可能有一個原因。所以我禁止評論 - 我使用這個,並沒有問題。 – zdim

+0

我真的是新來的Perl,同時尋找一種方式MIME :: Lite有最多的樣本。儘管我嘗試了Email :: Simple和Net :: SMTP,但實際上並沒有工作。所以我回到了MIME :: Lite。在我用完想法之後,我發佈了這個問題。 然後我回到Net :: SMTP並再次嘗試,然後它的工作。我儘可能地嘗試不使用Mime。 –

+0

將'SSL => 1'添加到'Net :: SMTP-> new(...)'選項。 – AnFi

相關問題