Perlでメール鯖を操ってメールを送ってみる。
ソース自体はEUC-JPで。
#!/usr/local/bin/perl use strict; use CGI::Carp qw ( fatalsToBrowser ); use CGI; my $q = CGI->new; use MIME::Entity; use MIME::Words qw ( :all ); use Jcode; my $j = Jcode->new; # 本文を作る。 my $data = <<"EOE"; 本文第一行目 日本語万歳 EOE # メールを作る。 my $mime = MIME::Entity->build( From=>encode_mimeword($j->set('送信者'=>'euc')->jis, 'B', 'iso-2022-jp').'<from@example.jp>', To=>encode_mimeword($j->set('受信者'=>'euc')->jis, 'B', 'iso-2022-jp').'<to@example.jp>', Subject=>encode_mimeword($j->set('メールのサブジェクト'=>'euc')->jis, 'B', 'iso-2022-jp'), Data=>$j->set($data=>'euc')->jis, Type=>'text/plain;charset="iso-2022-jp"', Encoding=>'7bit' ); # デバッグ用表示 print $q->header; print $q->start_html; # SMTP鯖に接続する。 use Net::SMTP; my $smtp = Net::SMTP->new( 'example.jp', Hello=>'example.jp', # 送信者のメールアドレスの@以降 Debug=>1 # 念のため ); # 認証する。 $smtp->auth( 'username', 'password' ); $smtp->mail('from@example.jp'); # 本当の送信者 $smtp->to('to@example.jp'); # 本当の受信者。複数の場合は、列挙する。 # $mstp->to('mail1', 'mail2'); $smtp->data(); # データ送信開始の宣言 $smtp->datasend($mime->stringify); # さっき作ったメールを送る。 $smtp->dataend(); # データ送信終了の宣言 $smtp->quit; # 接続の終了 # デバッグ $q->pre($mime->stringify); $q->end_html;