どうのこうの

名古屋/元フリーランス/スタートアップ勤務/ウェブ/マークアップ/プログラマ/エンジニア

Category: TransmitMail

TransmitMail を WordPress で使う場合の設置方法

TransmitMail を WordPress で使いたい場合、いろいろなやり方があるかと思いますが、私だったらこうする、みたいなことを書いてみたいと思います。

ファイル構成

ファイル構成は下記のようにします。

contact ページを作る

スラッグはなんでもいいですが、ここでは contact というスラッグでページを作ることにします。本文は空にします。(本文を入れても構いません。その場合、本文を出力する記述などが必要になります。)

page-contact.php に TransmitMail を読み込む

上記で作った contact ページのテンプレートファイルが page-contact.php なので、このファイルに TransmitMail の読み込みなどを書いてきます。

HTML の構造にもよりますが、下記のようなコードを書きます。

設定ファイルは PHP ファイルを利用します。

config.php を編集する

config.php を下記の記述します。

注意点としては、 $config['session']false にしておくことでしょうか。(セッションによる多重送信防止機能がうまく動作しないためです。おそらく、 WordPress のセッション周りと競合しているんだと思います。この設定により、セッションによる多重送信防止機能はオフになります。)

TransmitMail のテンプレートファイルを編集する

最後に TransmitMail のテンプレートファイルを編集します。

ヘッダー、フッターなどは WordPress のテーマファイルに書いているので、 form 要素の周辺と TransmitMail に関連する部分だけを記述します。

注意点としては、 form 要素の action 属性の値は ./ にすることです。 TransmitMail の初期のテンプレートファイルは action 属性が index.php になっているので、初期テンプレートから編集する場合は注意してください。

動作確認

http://localhost/contact/ などの URL で TransmitMail が動作することが確認できるかと思います。

以下は Twenty Seventeen に TransmitMail を設置してみた場合のスクリーンショット画像です。

まとめ

以上、 TransmitMail を WordPress で利用する場合の設置方法のご紹介でした。

WordPress にはいくつかのメールフォームプラグインがありますが、レイアウトの自由度が低かったりしますので、 WordPress で制作したサイトにレイアウトの自由度の TransmitMail を設置したい場合に、この記事を参考にしていただければと思います。

それでは、 Let’s enjoy WordPress and TransmitMail!

TransmitMail 2 のカスタマイズ例を Qiita に投稿しました

昨日公開した TransmitMail 2 のカスタマイズ例を Qiita に投稿しました。

こんな感じでカスタマイズすることで、TransmitMail本体には手を加えずにカスタマイズすることが可能になりました。

が、カスタマイズ例を書いてて思ったのは、書いてある内容がちょっと難しい気がするので、はたしてこういったカスタマイズをTransmitMailのユーザーは求めていたのかと不安になります…。

v2になってもv1の頃から使い勝手は変えていないし、TransmitMail本体に手を加えずにカスタマイズできるのはきっと便利なはずと自分に言い聞かせます。

自分に言い聞かせないと不安になるので「v2でカスタマイズがしやすくなった!」とか「v2でも変わらず便利だ!」といった応援?フィードバック?をお待ちしていますm(_ _)m

TransmitMail 2 をリリースしました

拙作のCopyright表示不要のオープンソースメールフォームシステム「TransmitMail」のバージョン2をリリースしました。

2013年の冬のWCANで「TransmitMail 2 を作ってます!」っていう発表をしてからもうすぐ2年です…。遅くなってすみません…。

以下、v2で何が変わったのかを簡単にご紹介します。

v1を利用している人はv2に移行したほうが良い?

現在、v1を利用している方は、そのままv1を利用してもらって特に問題はありません。基本的な動作はv1とv2で違いはありませんので、v2にアップグレードしたからといって特別何かが便利になるといったことはありません。

1点だけ機能面で違う点は、v2では「添付ファイルの入力必須」ができるようになりましたので、「添付ファイルの入力必須」を利用したい方はv2に移行していただくと良いかと思います。

ただ今後は、v1は不具合や脆弱性等の対応は行いますが、機能改善等は行わない予定でいますので、今からTransmitMailを設置する方はv2をご利用いただければと思います。

変わらないこと

先に変わらないことをご紹介しますと、HTMLテンプレートの書き方は下記の「グローバルエラーの書き方」と「自動返信メール本文のファイル名」以外は変わっていません。v1からのアップグレード方法はまた別途、ブログ記事等で書きたいと思いますが、HTMLテンプレートはほぼそのまま利用可能です。(v1からのアップグレード方法をGithub wikiに書きました → v1 から v2 へのアップグレード方法 · dounokouno/TransmitMail Wiki

送信メール本文のテンプレートは変更点はありませんので、そのまま利用できます。

変わったこと

変わったこと目次

グローバルエラーの書き方

グローバルエラーの書き方が下記のように変わりました。

v1の場合

v2の場合

$global_error_flag が無くなって、エラーの有無の判別に $global_errors を利用するようになりました。

一つ覚えることが少なくなったので、すっきりしたかなと思います。

自動返信メール本文のファイル名が変わった

自動返信メールの本文のファイル名が mail_autoreply_body.txt から mail_auto_reply_body.txt に変わりました。

設定ファイルの書き方が変わった

設定ファイルはYAML、JSON、PHPから選べるようになりました。一応、YAMLが推奨です。一番簡単に書けるので。

それぞれの設定ファイルの書き方は config/ 以下にサンプルを用意していますので、それを見ながらそれぞれ config.ymlconfig.jsonconfig.php を作ってもらえればと思います。

(サンプルに無い設定は、また別途、ドキュメントを整理したいと思っています。 → ドキュメントを書きました。

設定ファイルの読み込みは index.php12行目にあります。

初期値では config/config.yml を読み込むようになっていますので、 config/config.yml 以外を利用する場合はここを書き換えてください。

設定ファイルの書き方が簡単になった

v1の設定ファイルは必要の無いコードがたくさん書かれていましたが、設定の初期値をTransmitMail本体で持つようにしたので、「初期値の無いもの」と「初期値から変更をしたいもの」だけを記述すればいいようになりました。

最低限必要な設定は「メールアドレス」と「件名」だけです。

「メールアドレス」と「件名」と「自動返信の件名」を書いただけの config.yml は下記のような感じです。

4行だけです。短くてすっきりです。

チェックモードのパラメータが変わった

チェックモードのパラメータが ?mode=check から ?checkmode に変わりました。(チェックモード以外のモードは無いので。)

チェックモードを利用する場合は設定ファイルに checkmode: 1 または checkmode: 2 を書き加えます。( checkmode の初期値は 0 でチェックモードは無効になっています。)

チェックモードが便利になった

checkmode: 1 はこれまでのチェックモードと同じですが、 checkmode: 2 を指定すると、各種設定の初期値はどんな内容か、また設定ファイルでどのように上書きされるかが表示されます。

TransmitMailが想定通り動かないときは checkmode: 2 で確認してもらうと問題解決の助けになるかと思います。

半角カタカナの入力チェック機能がなくなった

半角カタカナの入力チェック機能はv2では削除しました。(メール送信時に文字化けしてしまうため。)

添付ファイルを入力必須にできるようになった

ご要望が多かった(かどうかは分かりませんが、それなりに要望のあった)「添付ファイルの入力必須」ができるようになりました。

添付ファイルの入力必須は、いつもの添付ファイルの記述に下記のコードを追加します。

input.html363行目付近もあわせて参照してもらえればと思います。

複数のTransmitMailを設置しやすくなった

v1ではTransmitMailを複数設置しようと思うと、TransmitMailで利用するファイル一式を設置したい分だけ用意する必要がありましたが、v2ではTransmitMail本体は1つでそれをインクルードすれば良いようになりました。v1でもカスタマイズをすればできましたが、v2では標準で対応しています。

例えば、下記のようなファイル構成にして、

index.phprequire_once の部分を下記のように修正すると、TransmitMail本体は1つで複数のメールフォームを設置できます。

カスタマイズしやすくなった

v2を開発した主な理由はこれなのですが、PHPベタ書きだったv1から、v2ではTransmitMailクラスに処理をまとめたので、TransmitMailクラスを継承して処理を上書きしたり、といったことがやりやすくなりました。

また、各処理のあとに afterXXX というメソッドを呼ぶようにしてあるので、「処理Aと処理Bの間に処理を挟みたい」みたいなことがやりやすくなるかなと思っています。

どんな処理があって、どんなメソッドがあるかは、その部分のコードを貼っておきますので、興味のある方はご確認いただければと思います。

カスタマイズ例は、またブログ記事等でご紹介できればと思っています。

まとめ

以上、TransmitMail 2 のリリースのお知らせと変更点のご紹介でした。

v2を使ってみた方の感想などお待ちしておりますm(_ _)m

TransmitMail の脆弱性について

公開日 2015年4月20日
最終更新日 2015年4月23日

概要

TransmitMail の v1.0.11 〜 v1.5.8 に脆弱性が存在することが判明いたしました。この脆弱性を悪用された場合、悪意のある第三者の攻撃により、ディレクトリトラバーサルによる設置サーバーの任意のファイルのダウンロード、またクロスサイトスクリプティングによるフィッシングサイトへの誘導などの危険性があります。

影響を受けるバージョンの TransmitMail を使用している場合は、最新版へのアップデートもしくは修正内容の差分を確認し、ご自身での修正の対応をお願いいたします。

該当バージョンの確認方法

使用している TransmitMail のバージョン番号の確認方法は下記の通りです。

脆弱性の説明

TransmitMail はメールフォーム機能を提供するウェブシステムです。TransmitMail にはファイル添付機能があり、そのファイル添付機能のブラウザ上でのプレビュー表示時の入力チェックのロジックが不十分だったため、悪意のある第三者により、ディレクトリトラバーサル(更新から30分以内の任意のファイルが対象)とクロスサイトスクリプティングの脆弱性が存在します。

脆弱性がもたらす脅威

ディレクトリトラバーサルの脆弱性

TransmitMail の添付ファイル機能の仕様により、更新から30分以内といった制限があるものの、悪意のある第三者によってウェブ越しに設置サーバーの任意のファイルをダウンロードすることが可能になり、機密情報の漏洩などの可能性があります。

クロスサイトスクリプティングの脆弱性

悪意のある第三者によりウェブブラウザ上で任意のスクリプトが実行可能になり、フィッシングサイトへの誘導やウィルスのダウンロードなどの可能性があります。

対策方法

最新版へのアップデートは配布ページ(https://github.com/dounokouno/TransmitMail)より最新版をダウンロードし、すべての PHP ファイルを最新のものに置き換えてください。 ./conf/config.php などに独自の修正を加えている場合は、適宜、修正を反映させてください。

関連情報

謝辞

本件は株式会社トレードワークスの佐藤元様よりご指摘をいただきました。
佐藤元様、IPA様、JPCERT/CC様、JPCERT/CCのご担当者様に厚くお礼申し上げます。

更新履歴

  • 2015年4月20日 この脆弱性情報ページを公開しました。
  • 2015年4月23日 関連情報としてJVNの本脆弱性情報ページへのリンクを追加しました。

連絡先

  • 多川貴郎(タガワタカオ) / dounokouno[at]gmail.com

TransmitMailにQdmailとQdsmtpを組み込みました

TransmitMailにQdmailとQdsmtpを組み込み、メール送信部分はQdmailとQdsmtpを利用するように修正しました。

 

最新版のダウンロードはGithubからどうぞ。

https://github.com/dounokouno/TransmitMail

 

動作サンプルはこちらです。

http://etc.dounokouno.com/TransmitMail/app/index.php

 

今回、Qdmailを組み込んだことで、送信メール本文の文字化けが起きにくくなったかと思います。

また、Qdsmtpで外部SMTPサーバー経由でメールを送信することができるようになりました。

外部SMTPサーバー経由で送れると、
いろいろと便利なんじゃないかなぁと思っています。
(Windowsサーバーだとsendmailコマンドが無い場合が多いから、外部SMTPが使えると便利と聞きます。)

 

外部SMTPを利用する方法は、
lib/config.phpの内容をご参照ください。

「どこのサーバーがどういった設定なのか」といったご質問にはお答えしかねますので、
あらかじめご了承くださいませ。
(っといいますか、多分把握しきれないくらいサーバーの種類があると思いますので…。)
(Gmailが一番よく使われるかと思いましたので、サンプルとしてGmailの設定方法をlib/config.phpの中に記載しておきました。)

どうしてもうまく動作しない場合は、GitHubのissueにコメントください。
きっと、どなたかが回答してくれると思います!

 

TransmitMailをご利用の上でご不明点等ありましたら、
Githubのissueにコメントいただくか、
こちらの記事へのコメントいただくか、
メールにてお問い合わせください。

この記事へのコメントでのご質問はご遠慮ください。
(お問い合わせが分散すると管理が大変なので…。)

この記事へのコメントは、
「外部SMTP機能を待ってました!」とか、
「こんな金にならないことやってないで仕事しろ!」といった、
叱咤激励のコメントをいただければ幸いです。

それでは、今後ともTransmitMailをどうぞよろしくお願いいたします。

TransmitMailにファイル添付機能を追加しました

TransmitMailは2011年10月に公開し、約1年が経ちました。

おかげさまで、(そこそこ)たくさんの方にご利用いただいているようで、ありがたく思っています。

さて、そんなTransmitMailですが、この度、待望(?)のファイル添付機能を追加しました。

http://etc.dounokouno.com/TransmitMail/

 

動作サンプルはこちらです。

http://etc.dounokouno.com/TransmitMail/app/index.php

ご自由にテストしていただいて構いませんが、どうせ送るなら、猫の画像とかを送ってもらえると良いかと思います。

 

最新版のダウンロードはGithubからどうぞ。

https://github.com/dounokouno/TransmitMail

 

設定方法やテンプレートの記述方法はWikiにまとめました。

https://github.com/dounokouno/TransmitMail/wiki

テンプレートの記述方法がちょっと難しくなっていますが、画像をプレビュー表示したり、添付ファイルへのリンクを表示したり、比較的自由な表現ができるのではと思っております。

 

TransmitMailをご利用の上でご不明点等ありましたら、Githubのissueにコメントいただくか、
こちらの記事へのコメントいただくか、
メールにてお問い合わせください。

この記事へのコメントでのご質問はご遠慮ください。
お問い合わせが分散すると管理が大変なので…。

この記事へのコメントは、
「ファイル添付機能を待ってました!」とか、
「こんな金にならないことやってないで仕事しろ!」といった、
叱咤激励のコメントをいただければ幸いです。

それでは、今後ともTransmitMailをどうぞよろしくお願いいたします。

Copyright表示不要のPHP製汎用メールフォームシステム「TransmitMail」

2015年11月4日 追記
TransmitMail 2 をリリースしました。


個人事業を始めてすぐに、必要にかられてメールフォームシステムを作ったのですが、自分たちで使うだけではそんなに案件数もないし、ただ眠らせておくのはもったいないと思い、GitHubで公開することにしました。

 

Copyright表示不要でMITライセンスなので、商用、非商用問わず自由に使っていただけます。

改造したり再配布していただいてもOKです。
いい改造ができたら、Pull Requestください!

お客さんのサイトに設置したり、設置代行で手数料を取ったりしてもらってもOKです。

でも、可能であれば、TransmitMail自体は無料で扱ってもらえるとうれしいです。
(個人的な考えですので、強制ではないです。)

 

TransmitMailの特徴

メールフォームシステムなんて、ましてやPHP製なんて星の数ほどあると思いますが、TransmitMailには「マークアップエンジニアに優しい」という特徴があります。

メールフォームの設置って、大抵、マークアップエンジニアの仕事ですよね?

マークアップエンジニア(僕)が作ったので、マークアップエンジニアに優しい作りになっています。

テンプレートの記法が少々難しいかもしれませんが、慣れればかなり早く設置できるじゃないかと思います。

「予算の都合でCMSは設置しないけどメールフォームは欲しい!!」なんてときにちょうどいいんじゃないかなと思います。

 

設置方法について

GitHubのWikiにマニュアルをまとめました。

ですが、メールフォームを設置したことがある方でしたら、HTMLファイルとconfディレクトリの中を見ればだいたい理解してもられると思います。

Pages – GitHub

 

いろいろなメールフォームシステムを設置してきて思ったこと

マークアップエンジニアとしていろいろなWebサイト制作に携わり、CMSだったりCMSじゃなかったりと、いろいろなメールフォームシステムを触ってきた結果、「ここが使いにくいよなぁ。」とか、
「ここがこうだったら使いやすいのに。」とか、日頃から思っていた不満やストレスの全てをぶつけて作りました。

そのせいで、多少冗長な記述が必要になる場合もありますが、汎用性を持たせるため仕方がないかなと思っています。

その時は多少時間がかかるかもしれませんが、結果的には時間短縮になると信じています。

 

マークアップはWeb制作の一番最後の行程(運用は除いて)で、大抵、設計やデザインやお客さん都合で押したスケジュールのしわ寄せがきているかと思います。

そんなマークアップエンジニアが、TransmitMailを使って少しでも早く帰れることを願って止みません。

日本のマークアップエンジニアの皆さん、一緒にがんばりましょう!!

 

また、不具合等発見されましたら、GitHubのissueやこのブログにコメントいただければ幸いです。

Issues – dounokouno/TransmitMail – GitHub

© 2017 どうのこうの

Theme by Anders NorenUp ↑