sendmailにはhtmlとファイルの内容が含まれています。

sendmailにはhtmlとファイルの内容が含まれています。

ファイルの内容を電子メールで送信し、ファイルの先頭と末尾に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テンプレートモジュールがあります。

おすすめ記事