perlでメールを送信する場合、多くの場合ではsendmailコマンドにパイプでデータを渡してメールを送信するが、この方法はセキュリティ上好ましくない。

そこで、Mail::Sendmailを使用した方法を以下のとおりご紹介。

ちなみに、Mail::Sendmailwo使用すれば、SMTPサーバー経由でのメール送信も簡単に実装できるが、今回ご紹介するソースは従来の方法の代替策としての方法。

#!/usr/bin/perl -wT

use strict;
use warnings;
use Encode;
use utf8;
use Mail::Sendmail;

# フォームデータの処理や入力チェックなど

&mailto($from, $to, 'Hello', 'World!'); # メール送信

sub mailto{

my ($from, $to, $subject, $body) = @_; 

$subject = encode('MIME-Header-ISO_2022_JP', $subject);
$body = encode('iso-2022-jp', $body);
my %mail;
$mail{'Content-Type'} = 'text/plain; charset="iso-2022-jp"';
$mail{'From'} = $from;
$mail{'To'} = $to;
$mail{'Subject'} = $subject;
$mail{'message'} = $body."\n";
sendmail %mail;

}