20070820

FAQ:あいかわらずなさくらメール、の場合

さくらメールを設置した際に生ずる代表的なトラブルや疑問をまとめてみました。大概のケースは解決できると思います。
さあ、確認する準備はOK?

トラブル編

送信ボタンを押すと500エラーが返ってくるんだけど…
プレビュー画面が表示されない
エラーページや、送信完了画面にテンプレートファイルのデザインが反映されない
プレビュー画面やエラー画面、送信完了画面、さらにはメールの文面が文字化けしてえらい事に…
メール送信すると必ず『sendmailのオープンに失敗しました』と表示される
『不正な呼び出しです』と表示され、メール送信できない
『何らかの原因で送信できません』と表示され、メール送信できない

疑問編

メッセージ以外の項目も必須入力にしたいのだが…
自動返信機能を付けられないカナ?
プレビュー機能はいらないんだけどなぁ
ランダムで画像を表示できる機能があったら嬉しいんだけど
添付ファイルは送信できないの?
返信希望のラジオボタンは正直必要無いよな
ここのサイトでやってるポップアップで表示するメールフォームってどうやるのか教えろコラ

送信ボタンを押すと500エラー

スクリプト本体(sakura_mail.cgi)のURLの末尾に『?admin』と引数を付けてブラウザで呼び出してください。
『環境チェック』という画面が表示されたでしょうか?
表示された
やはり500エラー

『環境チェック』は表示できた

perlのパスは間違っていないようです。
次にチェックするべきは日本語文字コード変換モジュール。チェック画面の"Jcode"という項目を見てください。ここに『インストール済』と表示されていますか?
されている
されていない

原因不明のエラーです

スクリプトに何か致命的な変更を加えてしまった可能性があります。
もう一度デフォルト状態のスクリプトのメールアドレスのみを変更した状態のもので設置し直してみてください。

根本的なエラーのようです

原因として考えられるのは
1、パーミッション(アクセス権)が間違っている
2、ファイル転送する際に、バイナリモードで転送してしまった
3、perlのパスが間違っている
4、そもそもそのサーバーではCGIの使用が認められていない
5、スクリプトが破損している
いずれかだと思います。
一つ一つ確認していきましょう。

パーミッションは『705』もしくは『755』になっている
YES
NO
そもそもパーミッションって何?

パーミッションはOKだった

ファイル転送はアスキーモード(ソフトによってはテキストモードという名前かも)で行ってください。転送モードを自動で判別する機能がある場合は、念の為その機能をOFFにした状態で確実にアスキーで転送し直してください。
動いたぜ!
まだ動かない…

perlのパスは大丈夫?

perlのパスが間違ってるのかもしれないですね。
このスクリプトのデフォルトの設定は#!/usr/bin/perlです。
ご利用になっているサーバーのperlのパスを確認して、それにに変更してみてください。
(ありがちなperlのパスといえば#!/usr/local/bin/perlがあります。デフォルトで駄目ならとりあえずコイツを試してみるっていうのも手だな)
動いたぜ!
パスは間違っていなかったよ
使用しているサーバーのperlのパスが解りません
つかそもそもperlのパスって何よ?

perlのパスがわかりません

ご契約なさっているサーバーの運営会社のサイトのFAQのページにperlのパスが記載されていると思います(大概ある)FAQのページじゃなくても「サーバーの仕様」とかそういうページにも載ってる筈。もし発見できなかったらメールでサーバー管理者に問い合わせてみてください。
(でもWEBサイトにパスが表記されていないという事は、そもそもCGIが使えないサーバー、という可能性が高いなぁ)

Jcodeモジュールがインストールされていない…

それでは"Encode"という項目はどうですか?ここに『インストール済』と表示されていますか?
表示されてる
インストールされていません

それならEncodeモジュールを使って動作させてみましょう

まず、以下のアドレスよりver2以上のJcodeモジュール一式をダウンロードしましょう。
http://www.ring.gr.jp/pub/lang/perl/CPAN/modules/by-module/Encode/DANKOGAI/
ダウンロードしてきたファイルを解凍してください。作成されたファイル群のなかに『Jcode.pm』という名前のファイルが存在する筈です。このファイルをサーバーのsakura_mail.cgiを設置したディレクトリに転送してください。転送モードはアスキー、パーミッションはデフォルトのまま変更の必要はありません。
動いたぜ!
それでも動かないんだけど…

パーミッションを変更してください

スクリプトのパーミッションは必ず『705』もしくは『755』にしてださい。
変更したら動いた!
それでも動かないんだけど…

テンプレートファイルがディレクトリ内に存在しません

どうやらスクリプトがテンプレートファイルを発見することができないでいるようです。 テンプレートファイル類は全てスクリプトと同一ディレクトリ内に設置してください。
いやいや!ちゃんとスクリプトと同じディレクトリにあるってば!

ファイルの名前を確認してください

テンプレートファイルの名前の変更はできません。

・プレビュー → pre.html
・エラー → error.html
・送信完了 → thank.html

拡張子も『.html』です。『.htm』ではスクリプトが認識できませんので注意してください。

メール送信すると必ず『sendmailのオープンに失敗しました』と表示される

スクリプト本体(sakura_mail.cgi)のURLの末尾に『?admin』と引数を付けてブラウザで呼び出してください。
『環境チェック』という画面が表示されたと思います。
『sendmail』の項目をご覧ください。そこには何と表示されていますか?
管理者にお問い合わせくださいって書いてあるよ
sendmailへのパスが表示された

多分駄目だと思う……

そもそもあなたのサーバーではsendmailの使用が許可されているのでしょうか?どうもあやしいです。サーバー管理会社に問い合わせて確認してみてください。
使えるって言われたよ?

珍しいですね

かなり特殊なパスを採用なさっているサーバーですね。ちょっと複雑かもしれませんが、以下の作業を実施することで正常動作するようになる筈です。
まずは、新規のテキストファイルを作成。そして以下の内容を記述します。

package EXsakura;
sub extensions {
$sendmail = 'あなたのサーバーのsendmailパス';
}
1;

そしたらそのテキストファイルを "ex_sakura.pl" という名前で保存します。
あとは作成したファイルをsakura_mail.cgiと同じディレクトリに設置すれば作業は完了。新たに設定したsendmailパスで動作するようになりますです。

REFERERチェックの設定がおかしいようです

REFERERチェックの為に設定したスカラー変数 "$ref_url" の値が正しくありません。この機能を使う場合は、必ずテンプレートファイルを設置したディレクトリのURLを指定してください。ファイル名まで指定してしまうと、プレビュー機能を使用した時にメール送信ができなくなってしまうので注意してください。

例:
○ → $ref_url = 'http://sample.ne.jp/~sample/sakura/';
× → $ref_url = 'http://sample.ne.jp/~sample/sakura/index.html';

どうしてこんな事に?

あなたのリモートホストが"送信禁止"ホストに設定されてるみたいですよ?
よく解らないならこの機能は使わない方が無難です。

@dame = ();

上記のように、スクリプト125行目の配列@dameの中身を空っぽにしてください。

ググれ

なんでもかんでも人に訊くのではなく、少しは自分で調べる姿勢も大事だと思うんだよね。

Google

お待たせ致しました。三つ目のお願いです。

どうやらあなたのサーバーではこのスクリプトを動かすことはできないようです……
どうかボクのことは忘れてください

文字化け

テンプレートファイルでShift-JIS以外の文字コードを使用しているのが原因だと思われます。特別な理由が無いのなら、テンプレートファイルはShift-JISでエンコードしてください。
どうしても他の文字コードを使いたいんだ!

Shift-JIS以外の文字コードを使用したい

めんどくせぇ奴だな こだわりを持ったお方ですね。
そんな場合はスクリプトを検索して 『$charset = 'shift-jis';』 という個所を見つけてください。このスカラー変数で任意の文字コードを指定してやれば、他の文字コードでエンコードされたテンプレートファイルも使用できます

記述例
# ISO-2022-JPの場合
$charset  = 'jis';

# EUC-JPの場合
$charset  = 'euc';

# UTF-8の場合
$charset  = 'utf-8';

# USC-2の場合
$charset  = 'ucs-2';

ここで正しく指定している限り、メールでの文字化けは起こらない筈です。
逆を言えば、メールが文字化けする場合はここの指定が間違っているということです。

動いた――――!!!

やったな!おめでとう!!
アタシも嬉しいぜ

メッセージ以外の項目も必須入力にしたいのだが…

フォームのhtmlに以下の記述を加える事で可能となります(必ず<form>~</form>の間に記述してください)

●送信者のお名前を必須入力にする

<input type="hidden" name="namflag" value="1" />

●件名を必須入力にする

<input type="hidden" name="subflag" value="1" />

●メールアドレスを常に必須入力にする
まず、返信希望かどうかを尋ねる設問を削除します。 その後以下のソースを書き込んでください。

<input type="hidden" name="res" value="on" />

返信希望の欄を残したまま必須入力にしたい場合は『希望』のラジオボタンのvalue値を"yes"から"on"に変更してください。

自動返信機能を付けられないカナ?

できますよ?
他のスクリプト用に組んだプラグインですが、さくらメールでも使用する事が可能です(さくらメール ver.2.00以上で動作)

ダウンロード:自動返信プラグイン

使い方

ダウンロードしたファイルを解凍すると "autoreturn.pl" というファイルが作成されます。これをテキストエディターで開いてください。

  1. 自動返信メールの送信者名
  2. 宛先の名前に付ける敬称
  3. 自動返信メールの件名
  4. 自動返信メールの文面

 
以上4つの項目を編集してください。
あとはさくらメールを設置したディレクトリに放り込んでください。これだけで、メール送信をされた方のところへ送信と同時に返信メールが送られるようになります(当然メールアドレスが入力された場合しか動作しません)
sakura_mail.cgi本体側での設定等は一切必要ございませんよ?楽ちんです。

プレビュー機能はいらないんだけどなぁ

OK。プレビュー画面のテンプレートファイル "pre.html" をサーバーから削除しちゃってください。スクリプトと同一ディレクトリに "pre.html" が存在しないと、自動的にスクリプトが「プレビュー機能は必要ない」と判断してさっさと送信してしまうモードで動作いたします。

ランダムで画像を表示できる機能があったら嬉しいんだけど

web拍手みたいな奴。ウチの他のスクリプトでは実装していますが、さくらメール用にプラグインで実装してみました。相変わらず私ってばこういった無駄な機能が大好きなんですよ。

ダウンロード:ランダム画像表示プラグイン

使い方はプラグイン内で表示する画像を指定して、スクリプト設置ディレクトリに放りこむだけ。送信完了画面で設定した画像がランダムで表示されます (thank.htmlのソースを見てもらえば解ると思いますが<!--$image-->の個所に挿入されます)

もうちょっと詳しい使い方を説明しようかと思いましたが、プラグインを開いてみれば理解できる人はすぐに理解できるだろうし、理解できない人はいくら説明しても理解してくれないだろうと思うので、やめにしました。
冷たい?いや、社会ってこんなもんですよ?

添付ファイルは送信できないの?

OK、ならコイツを使ってくれたまい。

さくらメール+:ダウンロード

但しコイツは送信前にプレビューを表示する機能がありません。仕様です。

また、このスクリプトを動作させる為には "Jcode" の他に "CGI" 及び "MIME::Base64" というモジュールが、それぞれサーバーにインストールされている必要があります。

返信希望のラジオボタンは正直必要無いよな

そうですか。なら思いきってバーっと削除してしましましょう。
このスクリプトはデフォルトの状態ですと『メッセージ』、つまりはメール本文のみが必須入力事項となっております。つまりメッセージ以外は空白でも送信できる訳です。フォームが存在する必要だって無いんです。極端な話をすればメッセージのフォームさえ存在するならば何の問題もなく動作しちゃうんです。

一言フォーム

こんな感じにだってすることが可能です。

ここのサイトでやってるポップアップで表示するメールフォームってどうやるのか教えろやコラ

ほらよ
スクリプト及び設置マニュアル一式

[CLAP]

トラックバック

このエントリーのトラックバックURL:
http://magokorokikaku.com/mt/mt-tb.cgi/82