Perl(パール) - コメント[1]

Perl(パール)とは、Larry Wall氏によって開発された、テキストの検索や抽出やレポート作成に適した、C言語に似た表記法のスクリプトプログラミング言語で、テキスト処理に優れていることから、CGIとしてWebアプリケ...  全文を表示

1: Posted by nisi at 2005/04/09 09:14:59

現在 メール送信はできるのですが、subject が表示できず、困っています。
多分、mimewでエンコードすべきだと思い
このように作成しましたが、だめです。


$$$$$$$$$$$$$$$$$$$$$$$

#!/usr/bin/perl

#setting
use CGI qw(:standard);
require 'jcode.pl';
require 'mimew.pl';
#####これがないと引数が渡りません。
if ($ENV{'REQUEST_METHOD'} eq "POST"){
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}else{
$buffer = $ENV{'QUERY_STRING'};
}
foreach(split(/&/, $buffer)){
($name, $value) = split(/=/, $_);
$value =~ tr/+/ /;
$value =~ s/%(..)/pack("C",hex($1))/eg;
&jcode'convert(*value,'euc');
$param{$name} = $value;
}

#フォームデータを得る

$log_ipanname = $param{'log_ipanname'};
$log_ipanzip = $param{'log_ipanzip'};
$log_ipanaddress = $param{'log_ipanaddress'};
$log_ipanaddress2 = $param{'log_ipanaddress2'};
$log_ipantel = $param{'log_ipantel'};
$log_ipanemail = $param{'log_ipanemail'};
$flagipan = $param{'flagipan'};
$flagsansei = $param{'flagsansei'};
$sougoukei = $param{'sougoukei'};



####################################################################
#一般客あてメール
$name = $name;

###かごの中身も提示したい
#一般客用メールの件名
$subject_a = 'ショッピングサイトのご注文確認';


$address = $log_ipanemail;
$body1 = $log_ipanzip;
$body2 = $log_ipanaddress;
$body3 = $log_ipanaddress2;
$body4 = $log_ipantel;
$body5 = $sougoukei;
$body6 = $**ipanemail;
$body7 = '****@s***.ocn.ne.jp';



#一般客送信先メールアドレス
$toaddr = "$body6 ";
$fromaddr = "$body7";
#一般客用 文字変換
#process before send
$mailName = jcode::jis($name);
$mailBody1 = jcode::jis($body1);
$mailBody2 = jcode::jis($body2);
$mailBody3 = jcode::jis($body3);
$mailBody4 = jcode::jis($body4);
$mailBody5 = jcode::jis($body5);
$mailBody6 = jcode::jis($body6);
$mailBody7 = jcode::jis($body7);

$encodedSubject_a = &mimeencode($Subject_a);

#一般客用 送信メール作成
open(MAIL,"| /usr/sbin/sendmail -t -f $toaddr ");
print MAIL "To: $mailBody6\n";
print MAIL "From: $mailBody7\n";
print MAIL "encodedSubject_a: $encodedSubject_a\n";
print MAIL "Content-Type: text/plain\n\n";
print MAIL "$mailName様 ご注文内容は以下の通りです。なおこのメールに記載されているようなお買い物に心辺りのない場合は、直ちにご返信くださいますようお願い申し上げます。\n";
print MAIL "*************************************************\n";
print MAIL "配送情報とご請求金額\n";
print MAIL "*************************************************\n";
print MAIL "御名前: $mailName様\n";
print MAIL "e-mail: $mailBody6\n";
print MAIL "郵便番号:$mailBody1\n";
print MAIL "都道府県:$mailBody2\n";
print MAIL "御住所:$mailBody3\n";
print MAIL "電話番号:$mailBody4\n";
print MAIL "注文合計:$mailBody5円\n";
print MAIL "送料:一括800円 北海道、沖縄はプラス200円、離島などの追加料金は、お客様にてご負担ください\n";
print MAIL "なお注文品数が著しく多く宅急便の箱一つに収まらない場合などは追加料金をお支払いいただきます。\n";

print MAIL "*************************************************\n";
print MAIL "ご注文内容\n";
print MAIL "*************************************************\n";



print MAIL "*************************************************\n";
print MAIL "お振込み先\n";
print MAIL "*************************************************\n";
print MAIL "$mailName様、下記いずれかの方法にてお振込み下さいますようお願い申し上げます。\n";
print MAIL "入金確認後、ご注文品を発送させて頂きます。\n";
print MAIL "振込み先: ****銀行京都支店(当)*****口座名 *****\n";
print MAIL "振込み先: 郵便振替(郵便局)****-*-****** 口座名 *****\n";
close(MAIL);





################################################################
#管理人用メール


###かごの中身も提示したい
$subject_b= '店主宛発注確認メールです。';


$fromaddr = "$body6";
$toaddr ="$body7";

#一般客用 文字変換
#process before send

$encodedSubject_b = &mimeencode($Subject_b);

open(MAIL,"| /usr/sbin/sendmail -t -f $toaddr ");
print MAIL "To: $mailBody7\n";
print MAIL "from: $mailBody6\n";
print MAIL "encodedSubject_b: $encodedSubject_b\n";
print MAIL "Content-Type: text/plain\n\n";
print MAIL "$mailName(お客様)が発注されました。ご注文内容は以下の通りです確認をお願いします。\n";
print MAIL "*************************************************\n";
print MAIL "配送情報とご請求金額\n";
print MAIL "*************************************************\n";
print MAIL "御名前: $mailName様\n";
print MAIL "e-mail: $mailBody6\n";
print MAIL "郵便番号:$mailBody1\n";
print MAIL "都道府県:$mailBody2\n";
print MAIL "御住所:$mailBody3\n";
print MAIL "電話番号:$mailBody4\n";
print MAIL "注文合計:$mailBody5円\n";
print MAIL " $toaddr:toaddr送料:次のようにお客様に告知済み 一般の場合 送料を確認してください。一括800円 北海道、沖縄はプラス200円、離島などの追加料金は、お客様にてご負担ください\n";
print MAIL "なお注文品数が著しく多く宅急便の箱一つに収まらない場合などは追加料金をお支払いいただきます。\n";
print MAIL "送料:次のようにお客様に告知済み 三清会会員の場合 送料を確認してください。一括800円 北海道、沖縄はプラス200円、離島などの追加料金は、お客様にてご負担ください\n";
print MAIL "なお注文品数が著しく多く宅急便の箱一つに収まらない場合などは追加料金をお支払いいただきます。\n";

print MAIL "*************************************************\n";
print MAIL "ご注文内容\n";
print MAIL "*************************************************\n";

print MAIL "*************************************************\n";
print MAIL "お振込み先\n";
print MAIL "*************************************************\n";
print MAIL "次のようにお客様に告知済み 会員の場合$mailName様、下記いずれかの口座にお振込み下さいますようお願い申し上げます。\n";
print MAIL "又はお荷物の中に郵便振替用紙を入れさせて頂きます。お振込み下さい。\n";
print MAIL "振込み先: *******支店(当)**** 口座名 ***\n";
print MAIL "振込み先: 郵便振替(郵便局)**-*-*** 口座名 *****\n";
print MAIL "次のようにお客様に告知済み 一般客の場合$mailName様、下記いずれかの方法にてお振込み下さいますようお願い申し上げます。\n";
print MAIL "入金確認後、ご注文品を発送させて頂きます。\n";
print MAIL "振込み先: ***銀行***支店(当)**** 口座名 ****\n";
print MAIL "振込み先: 郵便振替(郵便局)***-*-**** 口座名 *****\n";
close(MAIL);



##display web上に表示
$limit = &get_expire(-1);
print<<EOF;
Set-Cookie: cookieokaimono=""; expires=$limit;
EOF
print"Content-type: text/html\n\n";
print"<html>\n";
print"<title>sendresult on the web</title>\n";
print"<body><table align=\"center\" width=\"400\" height=\"500\"><tr><td>\n";
print"<table border=\"3\" width=\"400\"><tr><td colspan=\"2\">お買い上げ有難うございました。<br>お買い物内容の確認のメールを送信致しました。<br>
30秒ほどで着信しない場合はメールアドレスの誤りが考えられます。<br>
もう一度メールアドレスの再記入をお願い致します。<br>
ブラウザの戻るで戻って下さい。<br></td></tr><tr><td width=\"200\" valign=\"bottom\"><form action=\"./index.cgi\" method=\"get\">
<font color=\"#800080\"><b><input type=\"submit\" value=\"topに戻る\"></form></td><td width=\"200\" valign=\"bottom\"><form action=\"http://www.****.com\" method=\"get\"><font color=\"#800080\"><b><input type=\"submit\" value=\"***HP\"></form></td></tr>\n"; <br></td></tr></table>\n";


print"</body></html>";
exit;


################################################################


##################################################################

########################################################################
sub get_expire{
local($days_later) = $_[0];
($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime(time + int($days_later*60*60*24));
$mon = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")[$mon];
$wday = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$wday];
return sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",$wday,$mday,$mon,$year+1900,$hour,$min,$sec);
}