メールフォーム設置!

KENT-WEBさんのフリーメールフォームをお借りして、メールフォームを作りました。
ちょっと困ったとこがあったので覚え書き!

環境は、PCはMacでサーバはさくら、エディタはmi、
FTPクライアントはRBrouserを使用しています。

ワードプレスサイト内にメールフォームを設置しようとしました。
cgiは全く知識が無いです。
さくらのレンタルサーバーを使っているので、
クイックインストールのメールフォームを利用しようとしたんですが、フォーム部分(postmail.html内の<form>〜</form>部分)だけワードプレスサイトの固定ページに貼付けて動作確認したところ、
送信確認でエラー。

“name値に不正な文字が含まれています。”
とエラーに表示されてしまいました…

KENT-WEBさんのメールフォームはname値チェックをしてくれるので、
不正な文字ってことは文字化けしてるのかなあ…と思って
クイックインストールした内容を確認したら「Shift-jis」でした。
サイトで使ってる文字コードはUTF-8。
詳しいことはよくわからないけど多分ココが問題だ!

と、いうわけでクイックインストールに頼らず
配布されているのを自分で編集することにしました。
できるようになってたほうがきっと後々楽だし…

http://www.kent-web.com/mail/postmail.html
まずこちらから
スクリーンショット 2014-10-24 23.14.44
UTF-8版をダウンロード。

②中身を見てみると postmailフォルダの中に
postmail.htmlというのがあります。それをエディタで開くと
[cpp]
<form action="./postmail.cgi" method="post">
<input type="hidden" name="need" value="name email 問合せ種別" />
<input type="hidden" name="sort" value="name email 問合せ種別 メッセージ" />
<input type="hidden" name="match" value="email email2" />
<!–省略–>
<input type="submit" value="送信する" /><input type="reset" value="リセット" />
</form>
[/cpp]
という部分がありますね。
そこをコピーして、ワードプレスの場合、固定ページの記事内に貼付けます。
そして<form action=”./postmail.cgi” method=”post”>の部分を
ちゃんとリンクするように修正します。例えば
[cpp]<form action="http://なんちゃら.com/postmail/postmail.cgi" method="post">[/cpp]
これはpostmailフォルダをルート直下に置いた場合です。

③postmail内を編集していきます!これはちゃんとhttp://www.kent-web.com/mail/postmail.htmlを見ながらやったほうがいいですが、私と同じ環境なら以下のやり方で大丈夫なはず。init.cgiを編集します。変更するのは以下3つでした。
・送信先メールアドレス
・sendmailのパス【サーバパス】
・送信後の戻り先【URLパス】


・sendmailのパスは要プロバイダの仕様確認なんですが、
さくらだと /usr/sbin/sendmail みたいです。(2014年10月現在)。
・送信後の戻り先はデフォルトだとindex.htmlなんですが、
ワードプレスサイトの場合はindex.php。

④サーバーにpostmailをFTPとかでまるごとアップします。
あとはhttp://www.kent-web.com/mail/postmail.htmlにあるように、
postmail.cgiとcheck.cgiは755 or 705
init.cgiは666 or 604
data/log.cgi と data/ses.cgiは 666 or 606
に、パーミッションを変更します。
RBrouserならメニューのiを押せばパーミッションが見れて、そこで変更して”Apply Changes”を押せば完了。
スクリーンショット 2014-10-24 23.51.19

⑤http://なんちゃら.com/postmail/check.cgiをひらいて、
Check Mode: [ postmail(UTF-8) v7.11 ]
Perlバージョン : 0.00000000
セッションファイルパス : OK
…(続く)

みたいなのが出ればOK!フォームを貼った固定ページからテストを送信してみよう。

私はここでつまづきました。
⑤の段階で、何度やってもInternal Server Errorが出てしまいました。
色々試してみてもわからなかったのですが、こちらのブログに解決方法が!

改行コードをLFに変更する

改行コードというもの自体知らなかったんですが、miで見てみると
スクリーンショット 2014-10-25 0.01.25
これですね!ここがLF(UNIX)以外になった状態でアップしてもInternal Server Errorになってしまうみたい。
cgiファイルを全部LF(UNIX)に変更して保存、FTPクライアントからアップすると
無事http://なんちゃら.com/postmail/check.cgiがひらけるようになりました。
送信テストもバッチリ文字化けも無しです。
解決してよかった〜!