TransmitMailを使った際に割と色々調べたり調整が必要になったので、後日のためにメモ。
TransmitMail
- GitHub – dounokouno/TransmitMail: Copyright表示不要のPHP製汎用メールフォームシステム
- PHP高機能日本語メール送信ライブラリ・文字化けフリー
- QdmailがPHP7.1からcount()でエラーが出る
- TransmitMailでよく使うカスタマイズ
基本的には上から順に見ていけば対応できるかと。
TransmitMailも内臓されているQdmailも古いものだと言えそうですが、Qdmailの方はPHP7+への対応で多少手を入れる必要があるもののTransmitMail自体はそのまま使えています。
開発が止まっているに等しい状態とはいえ、こうして有志の方のアップデート情報も出ています。そのため現時点であれば利用に大きな問題はないように思います。
もちろん開発が継続しているライブラリの方が安心ではあるので、要件を満たすならそちらを使った方がよいでしょう。
確認画面がいらない
上記ページの以下の方法で確認画面なしで動かせます。
<!-- input.htmlに下記の一文を追加する -->
<input type="hidden" name="page" value="finish" />
<input type="submit" value="入力内容を確認する" />
サンクスページにリダイレクト
- サンクスページのURLを変更したい
どうしてもリダイレクトが必要、ということでしたら、 TransmitMail の本体にカスタマイズを加える場合、 lib/TransmitMail.php の 1027 行目あたりで完了ページの表示を行なっておりますので、この部分を PHP でリダイレクトするように書き換えていただくことで実現できるかと思います。
上記のようにありますが、その後のアップデートで行数が変化したせいかリンク先ずれてしまっているので、以下が書かれている部分を探す方がよいです。
// 完了画面を表示
echo $this->tpl->fetch($this->config['tpl_finish']);
上記を以下のようにすればとりあえずリダイレクトはできるかと。
// 完了画面を表示
$url = 'thanks.html';
header('Location: ' . $url, true , 301);
exit;
テンプレート用HTMLファイル
見られてもそこまでこまらないかもしれませんが、テンプレートとして用いられるinput.htmlやerror.htmlにはブラウザで直接アクセスもできるため、HTML状態のテンプレートが見えてしまいます。
ファイルを隠す方法はいくつかありますが、ファイル構成を変えずにと言う場合はinput.htmlなどのパーミッションを700などに変更するなどした方が良いかもしれません。
エラーチェック時に上に戻す
TransmitMailはPHP側でエラーチェックをしているため、エラーがあった場合には画面更新後にページ上部にもどってしまいます。
入力チェックをJSに変更するなど(この方法だけでは二重にチェックが走ることになりますが)方法はいくつかあるでしょうが、以下のような手も使えます。
{if:$global_errors}
<script type="text/javascript">
//jQuery使用
//formのIDが#formの場合
$(function() {
var position = $('#form').offset().top;
$('html,body').scrollTop(position);
});
</script>
{/if:$global_errors}
{if:$global_errors}は一度しか使えないようなのでscriptタグの入れ場所に融通が効きませんが、エラー処理時のみ表示させることができるのでそれを利用した方法です。
その他のもの
主に上記参考にさせたいただきましたが、POSTの値をそのままechoとかがあるのは避けたいですね…。
TransmitMailではNullバイトとバックスラッシュ(magic_quotes_gpcがonの場合)の削除を行なっていることは確認できました。
Responsive Mailform
Responsive Mailformは、この記事を書いている時期では以下の問題が起きました。
- 送信時の確認用アラートが表示された途端に消える
調べたところ以下の条件を確認。
- Chromeのみで確認
- Google タグマネージャのscriptがあると発症
以前は問題を確認していなかったのと特定ブラウザのみでの問題が起きた点から、ChromeかGoogle タグマネージャのアップデートに原因があるのではと思われます。
時間経過で回復しそうなのと、Responsive Mailformを見ても問題となりそうな部分がわからなかったので、この件はこれ以上調べず別のものを探してTransmitMailに行き着いた次第でした。
結び
Responsive Mailformの方は他で事例を見かけなかったので、後ほど何か追記できることがあれば追記しようかと思います。
4人がこの記事を評価
役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。
連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。