初心者だけどPerlが大好き

コードが世界を変える!

xamppでメール5 MercuryMailを使おう

それでは Xamppのコントロールネルで MercuryMail をStart させましょう

簡単なサンプルコードは こちら

testmail.cgi

#!C:/xampp/perl/bin/perl
use CGI;
my $q = CGI->new();
print $q->header(-charset => 'utf-8'),
$q->start_html(-title=>"TestMail"),
$q->h1('TestMail Form'),
$q->start_form(-action=>"sendmail.cgi"),
$q->em("What's your name?"),
$q->br,
$q->br,
$q->textfield('name'),
$q->checkbox('Not my real name'),
$q->br,
$q->em("What's your e-mail?"),
$q->br,
$q->br,
$q->textfield('email'),
$q->br,
$q->em("What's your subject?"),
$q->br,
$q->br,
$q->textfield('subject'),
$q->br,
$q->em('Any parting comments?'),
$q->br,
$q->br,
$q->textarea(-name=>'comments',-rows=>3,-columns=>50),
$q->reset,
$q->submit(-name =>'Action', -value =>'送信'),
$q->submit(-name =>'Action', -value =>'Scream'),
$q->end_form,
$q->end_html;

sendmail.cgi

#!C:/xampp/perl/bin/perl
use utf8;
use CGI;
use Encode;
use MIME::Base64;
my $q = CGI->new();
$name= $q->param('name');
$email= $q->param('email');
$subject= $q->param('subject');
$comments= $q->param('comments');
$mailto='trinity@nagoya.jp';
# 汚染チェックとして改行を取り除く
$name=~ s/\r|\n//g;
$email=~ s/\r|\n//g;
$subject=~ s/\r|\n//g;
$comments=~ s/\r|\n//g;
my $bound='wq5se3d1ew';
$mail_name= encode('MIME-Header-ISO_2022_JP',$name);
$mail_email=encode('MIME-Header-ISO_2022_JP',$email);
$mail_to=encode('MIME-Header-ISO_2022_JP',$mailto);
$mail_subject=encode('MIME-Header-ISO_2022_JP',$subject);
$mail_comments=encode('ISO_2022_JP', decode('utf-8', $comments));
# Sendmailのパスの指定
$sendmail = 'C:/xampp/sendmail/sendmail.exe';
# Sendmailのファイルを開いてデータを書き込む
open(MAIL,"| $sendmail -t")|| &error(150," 送信に失敗しました");
# mailのヘッダー
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-Type: Multipart/Mixed; boundary=$bound\n";
print MAIL "From: $mail_name <$mail_email>\n";
print MAIL "To: $mail_to\n";
print MAIL "Name: $mail_name\n";
print MAIL "Subject:$mail_subject\n";
print MAIL "--$bound\n";
print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n";
print MAIL "\n";
# mailの本文
$mail_comments =~s/\r\n/\n/g;
print MAIL "$mail_comments\n";
close(MAIL);
print $q->header(-charset => 'utf-8'),
$q->start_html('Mail Form'),
$q->h1('settings in this form'),
$q->p('メールを送信しました。'),
$q->end_html;