2017-11-12 5 views
0
ここ
sub send_mail_via_smtp 
{ 
    my(%p) = @_; 

    eval 'use Net::SMTP::TLS'; 

    my $repository = $p{session}->get_repository; 

    my $smtphost = $repository->get_conf('smtp_server'); 
    ##my $smtphost = 'smtp.gmail.com'; 

    if(!defined $smtphost) 
    { 
     $repository->log("No STMP host has been defined. To fix this, find the full\naddress of your SMTP server (eg. smtp.example.com) and add it\nas the value of smtp_server in\nperl_lib/EPrints/SystemSettings.pm"); 
     return(0); 
    } 


    my $smtp = new Net::SMTP::TLS(
      $smtphost, 
     Hello =>  'server.example.org', 
     Port =>  587, 
     User =>  'Example', 
     Password=>  'Example', 
     ); 

    # my $smtp = Net::SMTP->new($smtphost); 

    if(!defined $smtp) 
    { 
     $repository->log("Failed to create smtp connection to $smtphost"); 
     return(0); 
    } 

    $smtp->mail($p{from_email}); 
    $smtp->to($p{to_email}); 

    # if(!$smtp->recipient($p{to_email})) 
    # { 
    # $repository->log("smtp server refused <$p{to_email}>"); 
    # $smtp->quit; 
    # return 0; 
    # } 

    my $message = build_email(%p); 
    my $data = $message->as_string; 
    # Send the message as bytes, to avoid Net::Cmd wide-character warnings 
    utf8::encode($data); 
    $smtp->data; 
    $smtp->datasend($data); 
    $smtp->dataend; 
    $smtp->quit; 

    return 1; 
} 

私のメーラーコードがあるが、私が実行したときに、これはエラーを取得PerlのメーラーTLSエラー

オブジェクトのメソッド「新しい」パッケージ「ネット:: SMTP :: TLS」を介して見つけることができません(おそらくあなたを

私は

+2

を書くだけで、 'eval'をドロップすると、ロードされていない理由メッセージを与える必要があります

die [email protected] if [email protected]; 

この行は'ネット:: SMTP :: TLSを使用します; ' – PerlDuck

答えて

2

eval 'use Net::SMTP::TLS'; 

後にTLSが、doesntの作業をせずにメーラーを使用しようとした)? "ネット:: SMTP :: TLS" をロードするために忘れてしまいましたDDこれは、ネット:: SMTP :: TLSは