★Linuxでsendmail.cgi
にゃぁぁぁぁぁぁぁ?さんのsendmail.cgiは有名なWindows用のsendmail wrapperというような存在です.これをLinuxから使う方法を考えてみました.この使い方に意味があるのかというとあまりありません.(笑)ただ,MTAがない環境でフォームメールを使いたい場合などは役に立つのではないでしょうか?
1.一行目の #!/usr/bin/perl のパス
これは必要.パーミッションは755.
2.# $to = $HEAD{"To"};
$to = 'ky3i-tnk@asahi-net.or.jp';
の状態で
$ ./sendmail.cgi -t < testmail.txt
とすれば送れますが,ヘッダ情報がおかしくなる.(差出人がtestmail.txtのTo:にかかれた内容になる.よくわからないが,$to = 'ky3i-tnk@asahi-net.or.jp';のようなことをしているので当たり前のような気もする.)この場合$to = $HEAD{"To"};のままだと送れない.
3.$to = $HEAD{"To"};
もともとの状態で,
$Sendmail = './sendmail.cgi';
として,フォームメールのcgiを動かすと,きちんと送れる.この場合ヘッダ情報も正常.ただ問題点は本文にリターンを入れ2行以上にすると送れなくなること.1行でリターンなしならば本文も送れます.どうも改行コードの違いがいけないようです.それとsendmail.cgiがEUCコードで書いてないとでないとだめです.
非常に泥臭い方法ですが,まずフォームメール側で
&jis("$honbun");
$msg =~ s/\r\n/\n/g;
$msg =~ s/\n/<br>/g;
print MAIL "$msg\n";
close(MAIL);
と改行コードをすべて<br>にでも置き換えておいて
sendmail.cgiの最終チェックの前に
$mail =~ s/<br>/\r\n/g;
と<br>をまた改行コードに直せばうまくいきました.もっとスマートな方法はあると思いますが,とりあえず動きます.
Copyright 2002-2003 Kai All Rights Reserved & This site is Link Free
戻る