2017-02-03 5 views
0

私のスクリプトのこのセクションでは、私はこのような形式の電子メールを持っている必要があり、テスト用メールアドレスから自分自身に電子メールを送信します。1つの大きな電子メールと複数の小さな電子メールでデータを送信するにはどうすればよいですか?

$キー名$ keyexpr $ keycount $ keyavailable

$キー名$ keyexpr $ keycount $ keyavailable

$キー名$ keyexpr $ keycount $ keyavailable

$キー名$ keyexpr $ keycount $ keyavailable ...など

代わりに、私はいくつかのメールを受信複数のデータの代わりに1行のデータだけを使用します。どうすればいい?

if ($debug and !$hidestdout) { 
       $smtp = Net::SMTP->new($mailhost, Debug => 1); 
       } 
       else { 
       $smtp = Net::SMTP->new($mailhost); 
       } 
       eval { 
        $smtp->mail($mailfrom) || die("$!\n"); 
        if ($smtp->to(split(/,/, $mailto))) { 
         $smtp->data(); 
         $smtp->datasend("Subject: License File Status Report\n"); 
         $smtp->datasend("\n");              
         $smtp->datasend("\t$keyname $keyexpr $keycount $keyavailable\n"); 
         $smtp->dataend(); 
        } else { 
         print "\tERROR SENDING EMAIL, RUN WITH DEBUG FOR MORE INFO: ", $smtp->message(); 
         print "\tCHECK MAIL KEYWORDS: mailhost=$mailhost | mailfrom=$mailfrom | mailto=$mailto\n\n"; 
         print LOGFILE "ERROR SENDING EMAIL, RUN WITH DEBUG FOR MORE INFO: ", $smtp->message() if ($log ne ""); 
         print LOGFILE " RUN WITH DEBUG, CHECK MAIL KEYWORDS: mailhost=$mailhost | mailfrom=$mailfrom | mailto=$mailto\n" if ($log ne ""); 
        } 
        $smtp->quit; 
       }; 
       if ([email protected]) { 
        print "\tERROR SENDING EMAIL, RUN WITH DEBUG FOR MORE INFO\n"; 
        print "\tCHECK MAIL KEYWORDS: mailhost=$mailhost | mailfrom=$mailfrom | mailto=$mailto\n\n"; 
        print LOGFILE "ERROR SENDING EMAIL, RUN WITH DEBUG FOR MORE INFO\n" if ($log ne ""); 
        print LOGFILE " CHECK MAIL KEYWORDS: mailhost=$mailhost | mailfrom=$mailfrom | mailto=$mailto\n" if ($log ne ""); 
       } 
+3

あなたが表示するコードは、その1行で電子メールを送信したようです。これらの変数が変更されて新しいデータ行が作成されるループ内にある場合は、もちろん別の電子メールを送信します。まず、すべてのデータを集めて(私はこの周りにあると思われるループ内で)、すべてのデータを電子メールで送信します。 – zdim

+0

@Filburt配列を$ smtp-> datasendフィールドにダンプできませんでしたか?ダンプを使用した唯一の方法はdump(@arr)です。 – Titanfox

+0

さて、そうですね。しかし、なぜダンプで?あなたのデータからすべての文字列を構築し、 'datasend'を使ってそれを送信します。同様に、 'my $ data = join '\ n'、@ all_data'、そして' datasend($ data) 'のようになります。私は確信していませんが、 'datasend'もarrayrefを取ることがあります。 – zdim

答えて

0

私は、これは変数がつかんだデータを連結して、「電子メールの本文」に呼ばれることになる他の変数、にそれを割り当てることにより、仕事を得ることができました。

$mail_body .= "\t$keyname $keyexpr $keycount $keyavailable\n"; 

...

$smtp->datasend("\t $mail_body \n"); 

すべてのデータは、電子メールメッセージの中に、今後、私は終了し、メールを終了する場合は、ループの外です。

皆さん、ありがとうございます!

関連する問題