KENT-WEB サポートコーナー 過去ログ [ 0163 ]


記事No: 9701
投稿日: 2011/11/22(Tue) 14:51:48
タイトルWeb Mart 2.73 メールの送信について
ID情報: pteron
投稿者: pteron
URLhttp://cgi.mediamix.ne.jp/~k3205/user-cgi/mart/order.cgi

度々申し訳ありません。
WebMartで注文を確定させると、メールは送信されず、500 Internal Server Errorが発生してしまいます。サーバー側の情報を確認すると、「契約者以外にメールを送ることはできません」とあるので、注文者あてのメールがいけないのであろうと、注文者のsendmail部分について以下の通りコメントアウトしました。ところが、まだ500エラーが発生してしまいます。

似たようなディレクトリに同じくsendmailを利用するcgiがありますが、こちらの方は作動しているので、sendmailに対応していないということではなさそうです。

+++order.cgi 557行から

# sendmailコマンド
my $scmd1 = "$cf{sendmail} -t -i";
# my $scmd2 = "$cf{sendmail} -t -i";
if ($cf{sendm_f} == 1) {
$scmd1 .= qq| -f $in{email}|;
# $scmd2 .= qq| -f $cf{master}|;
}

# 管理者へ送信
open(MAIL,"| $scmd1") or &error("メール送信失敗");
print MAIL "To: $cf{master}\n";
print MAIL "From: $in{email}\n";
print MAIL "$mhead\n";
print MAIL "$mbody1\n";
close(MAIL);

# 注文者へ送信
# open(MAIL,"| $scmd2") or &error("メール送信失敗");
# print MAIL "To: $in{email}\n";
# print MAIL "From: $cf{master}\n";
# print MAIL "$mhead\n";
# print MAIL "$mbody2\n";
# close(MAIL);

+++


記事No: 9708
投稿日: 2011/11/23(Wed) 08:48:22
タイトルRe: Web Mart 2.73 メールの送信について
ID情報: kent
投稿者: KENT

> 度々申し訳ありません。
> WebMartで注文を確定させると、メールは送信されず、500 Internal Server Errorが発生してしまいます。サーバー側の情報を確認すると、「契約者以外にメールを送ることはできません」とあるので、注文者あてのメールがいけないのであろうと、注文者のsendmail部分について以下の通りコメントアウトしました。ところが、まだ500エラーが発生してしまいます。
>
> 似たようなディレクトリに同じくsendmailを利用するcgiがありますが、こちらの方は作動しているので、sendmailに対応していないということではなさそうです。
>
> +++order.cgi 557行から
>
> # sendmailコマンド
> my $scmd1 = "$cf{sendmail} -t -i";
> # my $scmd2 = "$cf{sendmail} -t -i";
> if ($cf{sendm_f} == 1) {
> $scmd1 .= qq| -f $in{email}|;
> # $scmd2 .= qq| -f $cf{master}|;
> }
>
> # 管理者へ送信
> open(MAIL,"| $scmd1") or &error("メール送信失敗");
> print MAIL "To: $cf{master}\n";
> print MAIL "From: $in{email}\n";
> print MAIL "$mhead\n";
> print MAIL "$mbody1\n";
> close(MAIL);
>
> # 注文者へ送信
> # open(MAIL,"| $scmd2") or &error("メール送信失敗");
> # print MAIL "To: $in{email}\n";
> # print MAIL "From: $cf{master}\n";
> # print MAIL "$mhead\n";
> # print MAIL "$mbody2\n";
> # close(MAIL);
>
> +++

単純に、注文者へのメール送信をやめるには上記の修正でいいと思います。
sendmailの引数は、サーバ側では指定されているのでしょうか?
(上記のソースでは、-t -i -f が使用されている)


記事No: 9712
投稿日: 2011/11/23(Wed) 14:26:18
タイトルRe^2: Web Mart 2.73 メールの送信について
ID情報: pteron
投稿者: pteron
URLhttp://cgi.mediamix.ne.jp/~k3205/user-cgi/mart/order.cgi

KENTさん、ありがとうございます。
sendmailの引数は特に指定されていないようです。以下のように-t -i -fなど削除した方がよろしいでしょうか。

> # sendmailコマンド
> my $scmd1 = "$cf{sendmail}";
> # my $scmd2 = "$cf{sendmail}";
> if ($cf{sendm_f} == 1) {
> $scmd1 .= qq| -f $in{email}|;
> # $scmd2 .= qq| -f $cf{master}|;
> }


記事No: 9713
投稿日: 2011/11/23(Wed) 17:17:38
タイトルRe^3: Web Mart 2.73 メールの送信について
ID情報: kent
投稿者: KENT

> KENTさん、ありがとうございます。
> sendmailの引数は特に指定されていないようです。以下のように-t -i -fなど削除した方がよろしいでしょうか。

引数についてはサーバによるので分からないですね。
ちなみに、postmailなど他のプログラムでsendmailを利用するものは動作しますか?


記事No: 9722
投稿日: 2011/11/24(Thu) 09:45:36
タイトルRe^4: Web Mart 2.73 メールの送信について
ID情報: pteron
投稿者: pteron
URLhttp://cgi.mediamix.ne.jp/~k3205/user-cgi/mart/order.cgi

KENTさん、ありがとうございます。
試しに削除して動かしてみましたが、やはりエラーが出てしまいました。ちなみに同じサーバーにあるプログラムではメールの発信は出来ています。プログラム(sendmail部分)は以下のようになっています。

sub sendmail {

if (!open(OUT,"| $sendmail $mailto")) { &send_error; }

print OUT 'X-Mailer: WebFORM v1.1 (c)rescue@ask.or.jp' ."\n";
print OUT "To: $mailto\n";
print OUT "From: $email\n";
print OUT "Subject: $subject\n";
print OUT "Content-Transfer-Encoding: 7bit\n";
print OUT "Content-Type: text/plain\n";
print OUT "\n\n";

$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; }

print OUT "DATE : $date_now\n";
print OUT "REMOTE_HOST : $host\n";
print OUT "REMOTE_ADDR : $addr\n";
print OUT "HTTP_USER_AGENT : $ENV{'HTTP_USER_AGENT'}\n";
print OUT "----------------------------------------------------\n\n";

foreach (0..$count-1) {print OUT "$DATA_N[($_)] = $DATA_V[($_)]\n"; }

print OUT "\n";
print OUT "----------------------------------------------------\n";
close(OUT);

print "Location: $location\n\n";
exit;
}


記事No: 9733
投稿日: 2011/11/26(Sat) 09:56:04
タイトルメール送信の問題ではありませんでした
ID情報: pteron
投稿者: pteron
URLhttp://cgi.mediamix.ne.jp/~k3205/user-cgi/mart/order.cgi

ほかのプログラムで動作確認したところ、特にsendmailでは問題は発生しませんでした。また、禁止とされている契約者以外への発信も可能でした。
ということで、order.cgiをオリジナルに戻し、再挑戦したところ、以下エラーが発生しました(「確定注文する」ボタンを押した後)。それまで正常に動いているということは、前半のorder.cgiは動いていてsendmailのサブルーチンに動いてからエラーが発生しているということでしょうか。

500 Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@mediamix.ne.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


記事No: 9735
投稿日: 2011/11/26(Sat) 19:00:33
タイトルRe: メール送信の問題ではありませんでした
ID情報: kent
投稿者: KENT

> ほかのプログラムで動作確認したところ、特にsendmailでは問題は発生しませんでした。また、禁止とされている契約者以外への発信も可能でした。
> ということで、order.cgiをオリジナルに戻し、再挑戦したところ、以下エラーが発生しました(「確定注文する」ボタンを押した後)。それまで正常に動いているということは、前半のorder.cgiは動いていてsendmailのサブルーチンに動いてからエラーが発生しているということでしょうか。
>
> 500 Internal Server Error
> The server encountered an internal error or misconfiguration and was unable to complete your request.
> Please contact the server administrator, webmaster@mediamix.ne.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.
>
> More information about this error may be available in the server error log.

サーバエラーだけだと分からないですね。

order.cgiの「sendmailコマンド」にて、適当な行の中に

&error;

という一文を入れ、どの行でエラーが発生しているのかの切り分けをすれば解明の糸口になるかもしれません。


記事No: 9739
投稿日: 2011/11/27(Sun) 01:51:53
タイトルRe^2: メール送信の問題ではありませんでした
ID情報: pteron
投稿者: pteron
URLhttp://cgi.mediamix.ne.jp/~k3205/user-cgi/mart/order.cgi

KENT様

なるほど、ありがとうございます。さっそく確認したところ、419行目でエラーが発生することがわかりました。この直前までは動いています。

# メール件名をMIMEエンコード
my $msub = Jcode->new("ご注文メール ($in{name}様)")->mime_encode;

ちなみにレンタルサーバーのPerlのバージョンを調べたところ、5.00503 でした。


記事No: 9741
投稿日: 2011/11/28(Mon) 08:23:30
タイトルMIME Encodeの問題の様です
ID情報: pteron
投稿者: pteron
URLhttp://cgi.mediamix.ne.jp/~k3205/user-cgi/mart/order.cgi

色々といじってみましたが、どうもMIME Encodeで問題が発生するようです。仮にMime Encodeをしないで、単純に件名を$msubに代入して動かすと、あとは問題なく作動しました(受領したメールの件名は文字化けします)。
my $msub = Jcode::mime_encode([\$msub2]);
もトライしてみましたが、エラーになってしまいます。
何とかほかの方法で件名をMIME Encodeする方法はないでしょうか?
Perlのバージョンが低いとかの問題でしょうか?


記事No: 9744
投稿日: 2011/11/28(Mon) 20:33:22
タイトルRe: MIME Encodeの問題の様です
ID情報: Fuyuki
投稿者: BAL
URLhttp://www26.tok2.com/home/sumire1100/

昔の方法に戻せばどうでしょうか。

# メール件名をMIMEエンコード
my $msub = &base64("ご注文メール ($in{name}様)");


#-------------------------------------------------
# BASE64変換
#-------------------------------------------------
sub base64 {
my($sub) = @_;
Jcode::convert(\$sub, 'jis', 'sjis');
$sub =~ s/\x1b\x28\x42/\x1b\x28\x4a/g;
$sub = "=?iso-2022-jp?B?" . &b64enc($sub) . "?=";
$sub;
}
sub b64enc {
my($ch)="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
my($x, $y, $z, $i);
$x = unpack("B*", $_[0]);
for ($i=0; $y=substr($x,$i,6); $i+=6) {
$z .= substr($ch, ord(pack("B*", "00" . $y)), 1);
if (length($y) == 2) {
$z .= "==";
} elsif (length($y) == 4) {
$z .= "=";
}
}
$z;
}


記事No: 9751
投稿日: 2011/11/29(Tue) 12:05:26
タイトルありがとうございました(解決しました)
ID情報: pteron
投稿者: pteron
URLhttp://cgi.mediamix.ne.jp/~k3205/user-cgi/mart/order.cgi

BAL様

ありがとうございます。
ご教示いただいた方法で解決いたしました。
それにしてもレンタルサーバーのPerl、古いですね・・・


[検索ページ]