Email::Stuffer や Email::Sender::Transport::SMTP 、 Email::Sender::Transport::SMTP::TLS に殆どおまかせなので、 以下のように書くだけでOK。
#!/usr/local/bin/perl use strict; use warnings; use utf8; use Email::Stuffer; use Email::Sender::Transport::SMTP; use Email::Sender::Transport::SMTP::TLS; use Data::Dumper; my $FROM = 'ないしょ@gmail.com'; my $SUBJECT = 'TEST MAIL'; # auth smtpの場合 my $SMTP_CONF = {host => 'ないしょ.co.jp', port => 587, sasl_username => 'ないしょ', sasl_password => 'ないしょ', debug=>1 }; # 素の場合 # my $SMTP_CONF = {host => 'ないしょ.co.jp', # port => 25}; # auth smtp(tls)の場合 my $SMTP_TLS_CONF = {host => 'smtp.gmail.com', port => 587, username=>'ないしょ', password=>'ないしょ', # APPのパスワード debug=>1 }; main( @ARGV); sub main { my ($mailto) = @_; my $email = Email::Stuffer->new(); # my $smtp = get_smtp_obj(); my $smtp = get_smtp_obj_tls(); $email->transport( $smtp ); $email->subject($SUBJECT); $email->from($FROM); $email->to($mailto); my $txt_mime = get_txt_mime(); ## 代替text part my $html_mime = get_html_mime(); ## html part push(@{$email->{parts}}, $txt_mime); push(@{$email->{parts}}, $html_mime); $email->send_or_die; } sub get_smtp_obj_tls { my $smtp = Email::Sender::Transport::SMTP::TLS->new($SMTP_TLS_CONF); return $smtp; } sub get_smtp_obj { my $smtp = Email::Sender::Transport::SMTP->new($SMTP_CONF); return $smtp; } sub get_txt_mime { my $attr = {content_type => 'text/plain', charset => 'utf-8', encoding => 'quoted-printable', format => 'flowed'}; my $body =<<EOF; これは、テキストメールのテストです。 EOF my $mime = Email::MIME->create(attributes => $attr, body_str => $body); return $mime; } sub get_html_mime { my $attr = {content_type => 'text/html', charset => 'utf-8', encoding => 'quoted-printable'}; my $body =<<EOF; <html> <head></head> <body> これは、<b>HTML</b>メールのテストです。 </body> </html> EOF my $mime = Email::MIME->create(attributes => $attr, body_str => $body); return $mime; } 1;