私の場合、perlでメール送信する場合、Net::SMTPを使用して次のようなsrcを書いていました。
use Encode; use Net::SMTP; my $CONF = TEST::Config->get_config(); sub send_mail { my ($self,$subject,$message,$mailto) = @_; #user登録がない場合、送信は行いません(debug用) if( not $CONF->{smtp}->{uid} ){ $self->warn("not defined smtp mail from: $subject $message"); return 1; } #mailtoがない場合、送信は行いません if( ref($mailto) ne "ARRAY" or @$mailto < 1 ){ $self->warn("not defined smtp mail to: $subject $message"); return 1; } my $from = $CONF->{smtp}->{uid} . $CONF->{common}->{smile_mail_domain}; my $mailto_str = join(',', @$mailto ); $subject = encode('iso-2022-jp',$subject); #メールのヘッダーを構築 my $header = << "MAILHEADER"; From: $from Subject: $subject Mime-Version: 1.0 Content-Type: text/plain; charset = "ISO-2022-JP" Content-Transfer-Encoding: 7bit MAILHEADER $message = encode('iso-2022-jp',$message); my $smtp = Net::SMTP->new($CONF->{smtp}->{host}, Hello=>$CONF->{smtp}->{host}, Port=> $CONF->{smtp}->{port}, Timeout=>20, # Debug=>1 ); unless($smtp){ my $msg = "can't connect smtp server:$CONF->{smtp}->{host}:$!"; die $msg; } unless ($smtp->auth($CONF->{smtp}->{uid},$CONF->{smtp}->{passwd}) ){ my $msg = "can't login smtp server:$CONF->{smtp}->{host}:$!"; die $msg; } $smtp->mail($from); $smtp->to(@$mailto); $smtp->data(); $smtp->datasend("$header\n"); $smtp->datasend("$message\n"); $smtp->dataend(); $smtp->quit; }
gihyo.jpでは「モダンPerlの世界へようこそ」が連載されていますが、その中の「第20回 Email::Sender:メールを送信する」でEmail::Senderが紹介されています。
http://gihyo.jp/dev/serial/01/modern-perl/0020?page=1
http://search.cpan.org/perldoc?Email::Sender
Email::Senderに乗り換えてもいいのかもしれませんが、Net::SMTPを使ってきた愛着?と、Email::Senderの依存moduleが多さであんまり気が進みませんね。
http://deps.cpantesters.org/?module=Email::Sender;perl=latest