CGI-BBS > SO−HO > ショッピングバスケット > hi-hoで簡易バスケットのメールがこない


カレッヂ
カレッヂ


質問者 SYS  投稿日 9/11(火) 10:33:45
プロバイダーhi-hoの個人エリアでrescueさんの簡易バスケットを使っているのですが
最後まで機能して肝心のメールが来ません
sendmailの設定はhi-hoのCGI詳細に書いてある
$sendmail = '/usr/bin/sendmail';を
$sendmail = './ssendmail';
としているのですがメールが来ません、お願いしますm(__)m
回答者 呑兵衛  [削除]  投稿日 9/13(木) 18:20:32
呑兵衛@大阪です。

レスキューさんの説明では、
# Hi-Hoをご利用の方は$sendmail設定の1行を次のものに入れ替えてください.
# (/cgi-bin/内にHi-Ho提供のssendmailを別途設置すること)
# $sendmail = "$ENV{'HOME'}/cgi-bin/ssendmail"; $hiho = 1;
となっています。

HI-HOの説明でも、
9.ファイルの書き込み、読み込みをCGIで行う場合には、必ずお客様のホームディレクトリ
(環境変数$ENV{'HOME'})を基準にお書き下さい。
  ex.お客様のhtmlディレクトリ下のファイルにアクセスする場合
  "$ENV{'HOME'}/html/...." (絶対パスでは指定できません。)
になってますね。
質問者 SYS  [削除]  投稿日 9/13(木) 18:45:39
お返事有難うございます。
sendmailの設定を替えてみたのですが
駄目でした(T_T)

先程レスキューさんに問い合わせてみたところHi−Hoでそのまま使えるのはV3、4、5
との事だそうです
改造しようと思えば大変なんでしょうね、初心者の私には無理そうです(^_^;)

回答者 呑兵衛  [削除]  投稿日 9/14(金) 01:40:03
変なサーバーのようです・・。
sub sendmail 以下を

&jis("$subject");

if (!open(OUT,"| $sendmail -f \"$email\" -s \"$subject\" $mailto")) { &error(略); }

として、ヘッダーの

print OUT "To: $email\n";
print OUT "From: $email\n";
&jis("Subject: $subject"); print OUT "$msg\n";

を取り去ります。あとはおなじ。
オプションの -f が From 、-s が Subject に当たるそうです。
subject が文字化けしたら base64エンコードをします。その場合は google ででも探してください。
回答者 呑兵衛  [削除]  投稿日 9/14(金) 01:48:46
-s \"$subject\"
ではなく
-s \"$msg\" でした。
質問者 SYS  [削除]  投稿日 9/14(金) 11:35:45
ありがとうございます、できました(^.^)

 仰る通りタイトルが文字化しました、base64を使うとはいったいどういう事なのでしょうか?
ダウンロードしてみたもののどう使っていいのか分かりません
何度もすみません(^_^;)

回答者 しあわせのツボ  [削除]  投稿日 9/14(金) 14:20:08
消極的な解決策:
SubjectにASCII文字だけを使います。
そうすれば化けません。

普通の解決策:
Base64のエンコードライブラリorモジュールを使います。
調べてもわからない時は呑兵衛さんが答えてくれるでしょう。

手抜きの解決策:
Base64へのエンコード自体は10行ちょっと書き足せば可能なので、それで済ませます。
楽ですし動作も軽いのですが、ライブラリを使うのに比べやや不確実です。

究極の解決策:
レスキューさんにBase64エンコードを実装するようお願いします。
この問題はたびたび出るので、せめてFAQに載せてほしいのですが…。
回答者 呑兵衛  [削除]  投稿日 9/15(土) 00:37:49
普通の解決策、いきます。

base64.plのダウンロード先
ftp://ftp.dti.ad.jp/.1/lang/CPAN/scripts/mailstuff/base64.pl

base64.plの使い方を含む、Form Mail の解説
http://www.watch.impress.co.jp/internet/www/article/1999/1122/special.htm

下の一行を、require './jcode.pl'; or require 'jcode.pl'; の下に追記
require './base64.pl';

&jis("$subject"); に続いて
$msg = &base64'b64encode($msg);
chomp($msg);
$msg = "=?ISO-2022-JP?B?$msg?=";
として、
-s \"$msg\"

以上、base64エンコードの処理です。

おまけ
GOOGLE 検索は 英文字(半角) と 全角日本語の 語句をスペースで区切り検索します。
必ず日本語で書かれたページの結果になります。
また、GOOGLEの検索窓で、
検索文字 site:www.rescue.ne.jp とすると、この「技の裏」ページを含む、このサイトだけの文字列検索ができます。
回答者 呑兵衛  [削除]  投稿日 9/16(日) 11:23:12
すみません。
base64のダウンロード先がデッドリンクになっていました。

ftp://ftp.dti.ad.jp/pub/lang/CPAN/scripts/mailstuff/base64.pl

です。

それから、Subject の文字列長が19文字(全角)、言い換えると38バイトを超えると
文字化けする癖があります。
質問者 SYS  [削除]  投稿日 9/22(土) 18:22:06
有難う御座います。
お返事遅れましてすみません、
何らかの手違いで返答出来てませんでした
色々勉強になりました、皆さん本当に有難う御座いますm(__)m

このページは終了したので返信(回答)は書きこめません

Web裏技