どうのこうの

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

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

25 Comments

  1. はじめまして。PHPは全く分からないため、ご教授いただけると幸いです。

    Transmitmail2をサーバーへUPしたのですが、確認画面へ遷移するボタンをクリックすると、
    「入力内容に誤りがあります。」というアラートは出るのですが、
    エラー内容が何も表示されず、また入力した内容も全て消えてしまっている状態になります。

    チェックモードで不備の箇所も確認したのですが、全てOKでどの部分でミスがあるのかが分かりませんでした。
    設定ファイルは、config.yml を使用し、その他のファイルはほぼ触らない状態でテストをしていますが、状況が変わりません。

    サーバーはCPIのACE01プランを使用、PHPのバージョンは、
    Transmitmailのフォルダのみ、
    ————————————————-
    AddHandler x-httpd-php5425 .php
    ————————————————-
    のhtaccessを設置しています。

    直下のhtaccessのPHPバージョンは、5.2.8です。
    情報が少ないですが、ご教授いただけると幸いです。

    お忙しところ恐れ入りますが、どうぞ宜しくお願い致します。

  2. tagawa

    2015年11月6日 at 11:56

    まるこ 様

    TransmitMail 2 をご利用いただきありがとうございます!

    v1 の頃にも 同様のご質問 をいただいておりましたので、 Github の Wiki のよくあるご質問に設定方法をまとめました。ご確認いただければ幸いです。

    CPI のサーバーで入力エラー画面や確認画面、送信メールに入力内容が表示されない | よくあるご質問

  3. はじめまして。
    以前から利用させていただいており、たまたま設定方法を確認しに検索したところv2のアップデートを知り、移行をしてみました。

    デフォルトの設定での動作は問題なかったのですが、CSVの書き出し設定をONにするとサーバーエラー500が出てしまい、メール送信はされるものの、完了ページへの転送とCSVの書き出しがされません。

    logフォルダのパーミッションなど弄ってみたのですが、どうにも改善できず、原因になりそうな部分を教えてもらえないかと思い、コメントさせていただきました。

    PHPのバージョンが5.3.3だったので、確認されている環境ではありません。同じサーバーの同じ階層でv1.5.0は問題なく動作しております。もしなにか分かる点などございましたらご教授下さい。

    よろしくお願いいたします。

  4. tagawa

    2015年11月10日 at 18:15

    taha 様

    TransmitMail 2 をご利用いただきありがとうございます!

    CSVの書き出し設定をONにするとサーバーエラー500が出てしまい、メール送信はされるものの、完了ページへの転送とCSVの書き出しがされません。

    上記件に関しまして、症状を確認いたしました。CSV 書き出し機能に不具合がありましたので、修正した v2.0.1 をリリースしました。お手数ですが、最新版を試してみていただければ幸いです。(修正ファイルは lib/TransmitMail.php のみです。)

    https://github.com/dounokouno/TransmitMail

    (CSV 書き出し機能は、私個人はあまり利用しない機能だったため、動作検証があまかったようです…。大変失礼いたしましたm(_ _)m)

  5. tagawa様

    早々のご対応ありがとうございます!無事動作いたしました。

    記事にあったGoogleスプレッドシートやMySQLへのカスタマイズも考えたのですが、ちょっとしたフォームの時はCSVログが便利だったので助かりました。

    TransmitMailは設置もしやすいながら、細かい設定も出来て大変重宝しております。今後ともよろしくお願いします。

  6. はじめまして。
    不具合と申し上げてよいものでしょうか、動作テスト時に気づいた点をご報告いたします。

    複数選択checkboxを2個以上選択した状態で、入力内容の確認画面へ遷移、そこから再度入力画面に戻りますと、チェックしていたものがクリアされておりました。
    1つだけ選択した状態ですと維持されるようです。
    はじめはこちらの設置ミスかなと思ったのですが、動作サンプルでも再現されているようでした。

    恐縮ながら内部の仕組み等がさっぱり分からず、ご連絡のみこちらにさせていただきました。
    もちろん、急ぎで修正を…等という不躾なお願いでもございません。
    使いやすさからいつも大変有難く活用させていただいております。
    ありがとうございます。

  7. tagawa

    2015年11月16日 at 19:42

    mutsu 様

    TransmitMail 2 をご利用いただきありがとうございます!
    また、不具合のご報告ありがとうございます。

    ご報告いただいた件、症状を確認いたしました。
    不具合でしたので、この後、修正いたします。

  8. tagawa

    2015年11月16日 at 20:12

    mutsu 様

    ご報告いただいた件を修正した v2.0.3 をリリースしました。お手数ですが、最新版を試してみていただければ幸いです。(修正ファイルは lib/TransmitMail.php のみです。)

    https://github.com/dounokouno/TransmitMail

    ご報告いただいた不具合は私の動作検証があまかったことが原因でした…。大変失礼いたしましたm(_ _)m

  9. tagawa様

    最新版に差し替えましたところ、事象が解消されました!
    当日中にご対応をいただきまして大変恐縮です。
    不具合だったのですね。
    本来ならばGitHubのIssuesでご連絡すべきところを、コメント欄にて失礼いたしました。

    いえいえ、本当に使い易いメールフォームを開発していただき、本当に感謝しております。
    本件につきましても、誠に有難うございました。

  10. tagawa

    2015年11月17日 at 18:41

    mutsu 様

    最新版に差し替えましたところ、事象が解消されました!

    早速ご確認いただきありがとうございます。症状が改善されたようで、安心いたしました^^

    本来ならばGitHubのIssuesでご連絡すべきところを、コメント欄にて失礼いたしました。

    GithubのIssueはGithubのアカウントが必要なこともあり、コメントをすることに少々敷居が高いように思いますので、コメントはGithubのIssueでも本ブログでもどちらでも問題ありませんので、ご安心ください^^

    この度は不具合のご報告をいただきありがとうございました。今後ともTransmitMailをどうぞよろしくお願いいたします。

  11. TransmitMail 2.0.7を使わせていただき、ありがとうございます。
    質問なのですが、送信を押してから、完了の画面に移るまでの時間が、
    3~4秒ほどあるのですが、そのようなものなのでしょうか?

  12. tagawa

    2016年2月15日 at 11:23

    mic 様

    TransmitMail 2 をご利用いただきありがとうございます。

    質問なのですが、送信を押してから、完了の画面に移るまでの時間が、
    3~4秒ほどあるのですが、そのようなものなのでしょうか?

    上記件に関しましては、サーバーのスペックによっては時間がかかる場合が考えられます。

    または、メール送信に外部SMTPを使用している場合も、送信までに時間がかかる場合があります。

    参考: https://github.com/dounokouno/TransmitMail/wiki/設定ファイルの記述方法(v2)#外部-smtp-サーバーの利用

    mic 様のご利用環境では外部SMTPを利用していますでしょうか?

    また、スペックの低いサーバーをご利用の場合は、もし他にサーバーをお持ちでしたら、他のサーバーでも同様に時間がかかるか、ご確認いただければ幸いです。

  13. 外部SMTPの設定はしておりません。

    サーバーは他にないので、確認できませんが、
    低スペックのサーバーの可能性はあると思います。

    ご回答ありがとうございました。

  14. tagawa

    2016年2月15日 at 12:00

    mic 様

    お返事ありがとうございます。

    3〜4秒はそれなりに長いように思いますので、jQuery 等を使い、submit ボタンの押下に合わせて submit ボタンを disabled にしたり、ローディング画像を表示したりしてもいいかもしれません。良いサンプルが見つかりませんでしたが、ご参考までに。

  15. TransmitMail 2 を使用させて頂いておりますm(__)m

    制作者の方にご質問してよいものか分からなかったのですが、もしお分かりになればご教授頂きたくコメント致します。

    選択肢が3つ(A、B、C)あるラジオボタンを配置したフォームを1つ用意しています。
    そのフォームへの入口が、選択肢3つのラジオボタンと同じA、B、Cとなっています。
    通常の処理だと、Bのボタンを押した場合、フォームは1つだけなので
    選択肢の項目で3つある中から再度「B」を選ぶ必要がありますが、
    「B」のボタンを押したら、フォームのラジオボタンは「B」が選ばれているという設定は行えますでしょうか?

  16. tagawa

    2016年6月22日 at 15:21

    kk 様

    TransmitMail をご利用いただきありがとうございます。

    TransmitMail の機能だけではカスタマイズをしないとできないかと思います。
    そのような仕様の動作は JavaScript を使って別途実装いただくと良いかと思います。

    ご参考になれば幸いです。

  17. tagawa 様
    ご回答いただきまして、ありがとうございます。
    私自身はJavaScriptが詳しくないので、引き続き調べてみたいと思います。
    ありがとうございました。

  18. はじめましてこちらに質問させていただくのが適切かどうかわからないのですがコメントさせていただきます。

    最新のトランスミットメールを使用させていただいておるのですが、KAGOYAのサーバーに設置したところうまく動作しないで困っています。

    症状としては$global_errorsが吐くエラー分が文字化けしており、うまく表示されないのと、
    入力項目をメールアドレスだけにして、エラーがない状態で確認ボタンをおしても確認画面に遷移しない状態です。

    若干気になっている部分でいうとKAGOYAのよくあるご質問に

    qmail は利用できません。
    postfix をご利用ください。
    http://support.kagoya.jp/kir/faq/index.php?action=artikel&cat=14&id=308&artlang=ja

    と記載があります。
    うまく動作させるためにお知恵をお貸しいただければ幸いです。

    ※別のサーバー環境(Xserver)では問題なく動作し送信も可能です。

  19. tagawa

    2016年8月16日 at 18:54

    testuro 様

    TransmitMail をご利用いただきありがとうございます。

    コメントを拝見する限りでは、文字コードの設定がうまくできていないように見受けられます。

    一度、詳しく調査をしてみたいと思いますので、KAGOYAのご契約中のプランをご教示いただければ幸いです。

  20. tagawa様

    早速のご返信ありがとうございます。
    再度担当者に確認したところ、KAGOYAのサーバーではなくCPIのACE01_2011というプランでした。

    謝った情報を記載し申し訳ありませんでした。

  21. tagawa

    2016年8月17日 at 17:33

    testuro 様

    サーバーがCPIの場合は、下記のよくあるご質問の内容を一度ご確認いただければと思います。

    https://github.com/dounokouno/TransmitMail/wiki/よくあるご質問#cpi-のサーバーで入力エラー画面や確認画面送信メールに入力内容が表示されない

  22. tagawa さま

    はじめまして。
    今はじめてフォームを入れている初心者です;
    いろいろ調べてここにたどり着き、導入させていただいております。
    今作っているサイトなのですが、ページを読み込む際に一度暗転させ、フェードインさせて表示しています。

    「入力内容を確認する」を押してエラーがあると、今のページを再読み込みし表示するため、また暗転しフェードインしてしまいます。

    「入力内容を確認する」を、ページ読み込みをせずに表示させることはできないでしょうか?
    メールアドレスの確認で、不備があるとその場で吹き出しが出てエラーメッセージがでるのですが、名前や文章のところもこのようにページ読み込みをせずに表示させることはできないでしょうか?

  23. 「入力内容を確認する」を、ページ読み込みをせずに表示させることはできないでしょうか?

    「入力内容を確認する」を押してエラーメッセージを出す際、ページ読み込みをせずにそのままその場でエラーメッセージを表示させることはできないでしょうか?

    ことば足らずでした;

  24. tagawa

    2016年9月29日 at 14:20

    haruhiko 様

    TransmitMail をご利用いただきありがとうございます。

    メールアドレスの確認で、不備があるとその場で吹き出しが出てエラーメッセージがでるのですが、名前や文章のところもこのようにページ読み込みをせずに表示させることはできないでしょうか?

    上記の機能は TransmitMail にはありませんので、私は使ったことがありませんが、 jQuery でリアルタイムでバリデーションをするようなプラグインを利用されてはいかがでしょうか?ご検討いただければ幸いです。

  25. tagawa さま

    早速やってみます。
    素早いご回答ありがとうございました!

コメントを残す

Your email address will not be published.

© 2017 どうのこうの

Theme by Anders NorenUp ↑