ファイルの内容を電子メールで送信し、ファイルの先頭と末尾にHTMLコメントを追加する必要があります。この目的のために「sendmail」を使用しましたが、電子メールを受信したときにOutlookで問題を引き起こす改行は表示されません。 「mail」コマンドを試しましたが、HTMLコメントを追加する方法がわかりません。これは私の作品です。
open(my $sendmail,"|/usr/sbin/sendmail -t");
print $sendmail "From: linux\@test.com\n";
print $sendmail "To: kris\@test.com\n";
print $sendmail "Content-Type: text/html\n";
print $sendmail "Subject: My Test\n";
print $sendmail "\n";
my $Header = << 'END';
<html>
<head>
<h3><font color="red">For test</font></h3>
</head>
<body>
<h3><font color="red">For test</font></h3>
<br/>
</body>
</html>
END
print $sendmail $Header;
print $sendmail "<br>Ran for time: \n";
my $alert3 = `/bin/cat /home/kris/test.txt`;
print $sendmail $alert3;
close($sendmail);
電子メールを送信するとうまくいきますが、"alert3"のファイルの内容は1行ですが、catを使用すると複数行になります。また、成功せずにOutlookで改行オプションを変更しました。このような状況を処理するより良い方法はありますか?
ベストアンサー1
|/usr/sbin/sendmail -t
.
メッセージを1行で書くと、メッセージが切り捨てられるなどの問題が発生します。また、エラーチェックやその他の問題が顕著に欠けています(open
失敗する可能性があり、ブランチはcat
ファイルの内容を読むのに最も費用がかかり、複雑でエラーが発生しやすい方法です)。
現代のPerlでは、次のものを使用できます。Eメール::フィラーこれにより、有効な MIME 部分を正しく設定する作業が大幅に簡素化されます。Eメール::MIME。インストールしてみましょう...
$ cpanm Email::Stuffer
...
12 distributions installed
$
私は持っていますアプリケーション::cpanminusそしてローカル::lib設定、必要に応じてベンダーパッケージなど、モジュールを処理する他の方法があります。カートンボックス、等。
今送信するコードは次のとおりです。
#!/usr/bin/env perl
use strict;
use warnings;
use Email::Stuffer;
my $the_html = <<'END';
<html><body><h3><font color="red">test</font></h3><br/></body></html>
END
Email::Stuffer
->from('[email protected]')
->to('[email protected]')
->subject('test test')
->html_body($the_html)
->attach_file('/home/kris/test.txt')
->send;
コンテンツが/home/kris/test.txt
実際に別のファイルとして追加されず、HTMLの途中で混在する必要がある場合、HTML関連のコードは次のようになります(たとえば、より多くのモジュール...)。
use Email::Stuffer;
use File::Slurper 'read_text';
my $the_html = <<'HEAD';
<html><body><h3><font color="red">test</font></h3><br/>
HEAD
$the_html .= read_text('/home/kris/test.txt');
$the_html .= <<'TAIL';
</body></html>
TAIL
Email::Stuffer
->from('[email protected]')
->to('[email protected]')
->subject('test test')
->html_body($the_html)
->send;
ただし、単に文字列を連結してHTML操作を実行する以上の操作を実行したい場合は、ファイルやその他の機能を含めることができるHTMLテンプレートモジュールがあります。