バージョン2.1.2で、SMTPだけでメール送信

高瀬さん (2010-12-08 11:22:35) sosiki-nai senyou-page desu. kaitemo access dekimasen.

メールフォーム プロ2.1.2で、メールを送る際に使うsend.cgiの中から呼んでいるsendmailというサブルーチンを書きかえてメールが送れています。
具体的には、\mailformpro\functions.cgiの中のsub sendmailを削除し、代わりに、下記のdateとsendmailサブルーチンに置き変えますと、正しいかは確信が持てませんが、それなりにメールが送れています。
メールフォームプロは完成度が高く、とても助かっています。
最新のバージョンで、SMTP版もサポートしていただけるとうれしいです。
------ここから----------------------------------
sub date {
$ENV{’TZ’} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time);
@week = (’Sun’,’Mon’,’Tue’,’Wed’,’Thu’,’Fri’,’Sat’);
@month = (’Jan’,’Feb’,’Mar’,’Apr’,’May’,’Jun’,’Jul’,’Aug’,’Sep’,’Oct’,’Nov’,’Dec’);
$d = sprintf("%s, %d %s %04d %02d:%02d:%02d +0900 (JST)",$week[$wday],$mday,$month[$mon],$year+1900,$hour,$min,$sec);
return $d;
}

sub sendmail {
use Net::SMTP;
my($mailto,$mailfrom,$fromname,$subject,$body) = @_;
if($config{"mode"}) {
$smtp = Net::SMTP->new(’localhost’, Hello=>"localhost");
$smtp->mail($mailfrom);
$smtp->to($mailto);
$date = &date;
$smtp->data();
$smtp->datasend("Date: $date\n");
$smtp->datasend("From: $mailfrom\n");
$smtp->datasend("To: $mailto\n");
$smtp->datasend("Subject: $subject\n");
$smtp->datasend("MIME-Version: 1.0\n");
$smtp->datasend("Content-Transfer-Encoding: 7bit\n");
$smtp->datasend("Content-Type: text/plain;charset=\"ISO-2022-JP\"\n\n");
$smtp->datasend("$body\n");
$smtp->dataend();
$smtp->quit;
} else {
flock(FH, LOCK_EX);
open(FH,">${mailto}\.eml");
print FH "To: $mailto\n";
print FH "Errors-To: $mailto\n";
print FH "From: $mailfrom\n";
print FH "Subject: $subject\n";
print FH "MIME-Version:1.0\n";
print FH "Content-type:text/plain; charset=ISO-2022-JP\n";
print FH "Content-Transfer-Encoding:7bit\n";
print FH "X-Mailer:SYNCK GRAPHICA MAILFORM\n\n";
print FH "$body\n";
close(FH);
flock(FH, LOCK_NB);
}
}
--------ここまで--------------------------------