2016-10-20 12 views
0

私は自分自身にperlで電子メールを送信しようとしています。正しく動作するにはmailxを取得できません。ここに私が持っているperlファイル全体があります:MailxはPerlで電子メールを送信しません

#!/usr/bin/perl 

sub emailSender{ 
    $RECIPIENT = "test\@test.com"; 
    $FROM = "test\@test.com"; 
    $SUBJECT = "test subject"; 
    $BODY = @_[0]; 

    open (MAIL, "|mailx -s \"$SUBJECT\" $RECIPIENT"); 
    print MAIL $BODY; 
    close MAIL; 
} 

emailSender("This is a test"); 

私はスクリプトを実行するときにエラーや警告が表示されません。それは正しく動作しますが、電子メールは送信されません。私はここに何かを逃していますか私はマニュアルには何も見つかりません。 OK(mail -vに注意してください)テスト済み

+0

を内部あなたは、これが全体のPerlがファイルですか? 'MAIL 'とは何ですか? – m0skit0

+2

常に 'use strict;警告を使う; '!!! –

+1

そして 'open'の戻り値をチェックし、パイプの場合は' close'を返します。 –

答えて

2

#!/usr/bin/perl 

use strict; use warnings; 

sub emailSender{ 
    my $RECIPIENT = '[email protected]'; 
    my $FROM = '[email protected]'; 
    my $SUBJECT = "test subject"; 
    my $BODY = shift; 

    open (MAIL, "|mail -v -s \"$SUBJECT\" $RECIPIENT"); 
    print MAIL $BODY; 
    close MAIL; 
} 

emailSender("This is a test"); 

しかし、コーディングスタイルのために、私は唯一のシステムのための大文字の変数を続けるだろうか、Perlが

関連する問題