このページにある修正方法はあくまで当サイトで配布しているメールフォームを対象としています。他のサイトで配布されているプログラムがすべてこの方法で解決できるとは限りませんのでご了承下さい。
Yahooジオプラスで当サイトで配布中ののPHPメールフォームを使用する場合には、そのままでは使用できませんのでご注意下さい。他のサイトで配布しているメールフォームの場合でもそのままでは送信できないことが多いでしょう。
2点注意点があります。まずは「送信元(差出人)のメールアドレスもyahooのメールアドレスである必要がある」。
もう一つは「PHPを動かすためには違うURLでPHPファイルにアクセスする必要がある」の2点です。
一般的なレンタルサーバーではこのようなことはありませんので余計に厄介です。
もし、可能であれば乗り換えをおすすめします(笑)。と言ってもそんな簡単ではないですよね。。。
独自ドメインを取得しているのであれば移行は簡単ですが、YahooのURLを使用している場合は検討が必要になりますね。
別に安くはないので特に新規で申し込むのはおすすめしません。。。他に安くて良いサーバーがたくさんあります。
詳しくはサーバーの比較ページを参考下さい。
これは以下yahooのページに掲載されています。
http://geocities.yahoo.co.jp/v/originalcgi/sendmail/
ポイントは以下の箇所
メールの送信元メールアドレス(From欄)が、Yahoo!メールの「メールオプション」にある「メールアドレスの追加・編集・削除」で設定しているメールアドレスもしくはYahoo!メールのメールアドレスの場合のみSendmail機能を設定できます。
まずメールの送信元はyahooのメールアドレスである必要があります。
ところが、配布中のプログラムは送信者への自動返信メールでは差出人(送信元)は管理者のメールアドレスになりますが、管理者宛のメールでは差出人(送信元)はメールフォームで入力された「メールアドレス」(要は問い合わせしたユーザのアドレス)を設定しています。
これは受信した際に誰から届いたのかすぐにわかるので、このようにしています。一般的に配布しているプログラムもこのようにしているのが一般的です。
Yahooの場合はこれではダメで、これの対処法としては管理者宛のメールの差出人(送信元)も管理者のメールアドレスにしてしまうことです。
受信した際には差出人(送信元)、宛先とも自分のメールアドレスになってしまいますがこうするしかありません。
ただ、返信時には相手のメールアドレスになるように設定していますので、返信時には送信者へ返信出来ます。
以下に修正方法を掲載しますので、ジオプラスをお使いの場合は修正して下さい。
修正点
mail.phpの390行目付近以下の箇所
(行数はフリー版以外やバージョンアップに伴い変わっている可能性があります。その場合検索して下さい)
$header="From: $post_mail\n";
を
$header="From: $to\n";
としてください。「$post_mail」を「$to」にするだけです。
(mail.phpの任意設定箇所で「管理者宛のメールで差出人を送信者のメールアドレスにする(する=1, しない=0)」が「1」で「する」になってる場合のみ適用されます)
※もちろんファイルの必須設定箇所「$to = "xxxxxx@xxx.com";」にはyahooのメールアドレスを指定する必要があります。
これも一般的なレンタルサーバーでは考えられないです。
その昔はCGIを動かすには特定のディレクトリに入れる必要があったことがありましたが、現在では基本的にどこに置いても動作することがほとんどです。
以下にその説明があります。一見すごく分かりにくく不親切極まりないですが。。。
http://geocities.yahoo.co.jp/v/originalcgi/
ポイントは以下の箇所
お客様のホームページ内に自由に設置していただけます。
※ただし、アクセスする場合には、http://cgi.[サブドメイン].geocities.jp/[Yahoo! JAPAN IDまたはニックネーム]/といったURLになります。サブドメインがwwwの場合は、http://cgi.geocities.jp/[Yahoo! JAPAN IDまたはニックネーム]/となります。
要するにPHPファイルはどこに置いてもいいが、URLに「cgi.」を追加する必要があるということ。
それはつまり相対パスではアクセスできないということです。
httpから始まる絶対パスで指定する必要があります。
となっている箇所を
とする。
サブドメインがwwwの場合は、
のようになります。
これで正常に動作するはずです。
テスト時には以下の点を確認ください。
・通知先(管理者)メールアドレスへのメール送信ができていること。
・送信者への自動返信メールが送信できていること
・送信後に完了ページ(自前のthanks.html、またはデフォルトの完了画面)が表示されること
これらが正常であればOKです。
ちなみに「Sendmailのパス」はPHPでは特に設定の必要ありません。