利用方法、設置方法質問 #2

Open
dounokouno opened this Issue Oct 12, 2011 · 334 comments

Projects

None yet
@dounokouno
Owner

利用方法や設置方法等に不明点がありましたら、コメントしてください。

@nkoichiro

こんにちは、先日たまたま見つけ、重宝させていただいております。
質問がありまして、selectの必須って可能でしょうか。
都道府県一覧のメニューで最上部に「都道府県」とoptionで括った際に、
都道府県で通ってしまわないようにしたいのですが、いかがでしょうか?
ご返信いただけますでしょうか。よろしくお願いします。

@dounokouno
Owner

nkoichiro様

ご質問ありがとうございます。
下記のようなコードでselectを必須にすることが可能ですが、いかがでしょうか?

<select name="セレクトメニュー[]">
  <option value="">入力してください。</option>
  <option value="項目1" {$selected.セレクトメニュー.項目1}>項目1</option>
  <option value="項目2" {$selected.セレクトメニュー.項目2}>項目2</option>
  <option value="項目3" {$selected.セレクトメニュー.項目3}>項目3</option>
</select>
<input type="hidden" name="required[]" value="セレクトメニュー[]" />
{if:$required.セレクトメニュー[]}
<div class="error"><em>{$required.セレクトメニュー[]}</em></div>
{/if:$required.セレクトメニュー[]}

ただ、エラーメッセージが「セレクトメニュー[]は入力必須です」となり不要な「[]」が表示されてしまいますので、
エラーメッセージをHTML内に記述していただく形になります。

{if:$required.セレクトメニュー[]}
<div class="error"><em>セレクトメニューは入力必須です。</em></div>
{/if:$required.セレクトメニュー[]}

不要な「[]」が出力される件に関しましては、
近日中にプログラムを修正しておきたいと思います。

うまく動作しない場合や、その他ご不明点などありましたら、
お気軽にコメントくださいませ。

それでは、どうぞよろしくお願いいたします。

@dounokouno
Owner

nkoichiro様

いろいろ検証してみたところ、
1つしか選択できないセレクトメニューには [] が必要ありませんでした。

ですので、下記のように記述いただくことで、
セレクトメニューを入力必須にすることが可能で、
エラーメッセージに [] が表示されることもありません。

<select name="セレクトメニュー">
  <option value="">入力してください。</option>
  <option value="項目1" {$selected.セレクトメニュー.項目1}>項目1</option>
  <option value="項目2" {$selected.セレクトメニュー.項目2}>項目2</option>
  <option value="項目3" {$selected.セレクトメニュー.項目3}>項目3</option>
</select>
<input type="hidden" name="required[]" value="セレクトメニュー" />
{if:$required.セレクトメニュー}
<div class="error"><em>{$required.セレクトメニュー}</em></div>
{/if:$required.セレクトメニュー}

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

それでは、どうぞよろしくお願いいたします。

@nkoichiro

ありがとうございます。参考の記述をもとに試したところ実現いたしました。
フォームを色々と探しましたが、このフォームが一番汎用的で使いやすいと思います。
商用のサポートなど、ご検討していませんか?
今後共よろしくお願いします。

@dounokouno
Owner

nkoichiro様

実現できたとのことで、安心いたしました。
お役に立つことができ、光栄に思います。

商用のサポートに関しましては、
検討はしているのですが、お金のやり取りやサポート体制等、
どのようにしたものかと考えているところで止まっております…。

このissueにコメントをいただけましたら、
私の分かる範囲でお答えいたしますので、
どうぞお気軽にコメントいただければ幸いです。

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

@nkoichiro

dounokouno 様

お世話になっております。
先日より質問をしておりますnkoichiroと申します。
またしても質問で恐縮です。

テンプレートの記述方法ページ
にて、送信メール本文(mail_body.txt)、自動返信メール本文(mail_auto_reply_body.txt)の説明があり、以下のような条件分岐処理がなされています。

{if:$会社名.value}{$会社名.value}
{/if:$会社名.value}

ラジオボタンやチェックボックスでは
うまく機能しないようなのですが、
記述方法をご教授いただけますでしょうか。

引き続き、よろしくお願いします。

@dounokouno
Owner

nkoichiro様

ご質問ありがとうございます。

TransmitMailで利用しているテンプレートには、if文の比較演算がありません。

ですので、「ラジオボタンの選択内容を判別して表示を切り替える」ことはできませんが、
「チェックボックスがチェックされているかを判別して、チェックされている場合だけ表示する」ことは可能です。

{if:$チェックボックス.value}チェックされています{/if:$チェックボックス.value}

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

また、if文の比較演算に関しましては、
私としましても欲しい機能ですので、
今後の課題として検討をさせていただきます。

@nkoichiro

ご連絡が遅くなり申し訳ございません。ご回答ありがとうございました。
if文に関しましてはお待ちしております。

さらに何度も質問すみません!

個別出力でif文をmail_body.txtに記述すると不要な改行が出るのですが、
この改行を削除することは可能でしょうか?

@dounokouno
Owner

nkoichiro様

お返事が遅くなってしまい申し訳ありません。

if文に不要な改行が入ってしまう件に関しましては、
テンプレートエンジンの仕様になります。

wikiの「テンプレートの記述方法」のページにもあります通り、
下記のような書き方にてご対応いただければと思います。

テンプレートの記述方法 · dounokouno/TransmitMail Wiki

{if:$会社名.value}{$会社名.value}
{/if:$会社名.value}{$お名前・ご担当者名.value} 様

仕様とはいえ、上記は決してスマートな書き方ではありませんので、
if文の比較演算と合わせて対応を検討していきたいと思います。

@ghost
ghost commented Jun 17, 2012

こんにちは。
実はまだ本格的に使っていないのですが、ちょっと疑問に思ったので教えていただけますでしょうか。

郵便番号や電話番号など、1つの項目であるけどテキストボックスを複数に分けて
入力させたいときがありますが、これはどのようにすればいいでしょうか?
単に項目を分けると、エラーメッセージが「電話番号の2番目は入力必須です」
のようになってしまいますし、確認画面やメールでもループが使えず、個別に作るしか
なくなってしまいますよね。

それと、メール送信時にデータをCSV(TSVの方がいいかな?)で保存する機能も
あるとうれしいですね。

@dounokouno
Owner

parasporospa様

ご質問いただきありがとうございます。

郵便番号や電話番号など、1つの項目であるけどテキストボックスを複数に分けて
入力させたいときがありますが、これはどのようにすればいいでしょうか?
単に項目を分けると、エラーメッセージが「電話番号の2番目は入力必須です」
のようになってしまいますし、確認画面やメールでもループが使えず、個別に作るしか
なくなってしまいますよね。

おっしゃる通り、個別で作る形になります。

例えば、入力画面のname値には「郵便番号3桁」「郵便番号4桁」としておき、
確認画面やメールの本文では個別で出力するような形になるかと思います。

入力画面の記述例:

<input type="text" name="郵便番号3桁" value="{$郵便番号3桁}" />
-
<input type="text" name="郵便番号4桁" value="{$郵便番号4桁}" />

確認画面の記述例:

〒 {$郵便番号3桁.value} - {$郵便番号4桁.value}

統括エラーメッセージは「郵便番号3桁は入力必須です」という出力になりますので、
利用者にもご理解いただけるかと思います。

それと、メール送信時にデータをCSV(TSVの方がいいかな?)で保存する機能も
あるとうれしいですね。

上記件に関しましては、
実装をとても迷いまして、
私個人が直近でcsv出力を必要としなかったため、
一旦、実装をしないことにしました。

ご要望として承りましたので、
今後のバージョンアップにて実装を検討したいと思います。

@ghost
ghost commented Jun 19, 2012

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

@katuo
katuo commented Jul 2, 2012

こんにちは。いつもTransmitMailにお世話になっております。
ひとつ設置方法で質問します。

SSLでTransmitMailを動かしたいのですが、送信できずに困っています。
SSLで動かすにはどうしたらいいでしょうか。

宜しくお願い致します。

@dounokouno
Owner

katuo様

コメントありがとうございます。

まずは下記点をご確認いただけますでしょうか?

  • 非SSLでは動作していますか?
  • パーミッションは正しく設定されていますか?
  • チェックモードは全てOKになっていますか?
  • conf/config.phpの50行目をini_set('display_errors', 'On');に修正して動作テストを行った場合に、エラーメッセージは表示されます?
  • safe_modeがonの場合に、メールが送信できない場合があることを確認しております。safe_modeの状態をご確認ください。

また、下記点に関しましては、
コメントをいただけましたら、詳しく調査をしてみたいと思います。

  • 設置しようとしているサーバーは、どちらの会社のプランでしたでしょうか?
  • PHPのバージョンはいくつでしょうか?
  • SSLは共有SSLですか?独自SSLですか?
  • 送信されないのは管理者宛メールですか?自動返信メールですか?もしくは、その両方ですか?
  • 複数のメールアドレスをお持ちの場合は、それらのメールアドレスへも送信されないか、ご確認ください。
@katuo
katuo commented Jul 2, 2012

dounokouno 様

お世話になります。katuoです。
早速のご連絡ありがとうございます。

 ● 非SSLでは動作いたします。
 ● パーミッションも正しく設定されています。
 ● チェックモードもすべてOKです。
 ● エラーメッセージを入れてもエラー表示はされませんでした。
 ● safe_modeはOFFになっています。

具体的な現象ですが、SSLを入れると入力チェック(必須チェックなど)は動作するのですが、
項目も全て正しく入れた後に送信すると入力確認画面に行かず、入力画面に戻ってきます。
その際、各項目に入力した情報も残っています。

サーバーなどの詳細は以下の通りです。↓

 ● サーバー:GMOクラウドレンタルサーバー iCLUSTA+レギュラープラン
 ● PHPバージョン:5.2.14
 ● SSL:共有SSL
 ● 送信されないのは管理者宛メールです。(※自動返信メールは使っていません。)
 ● 複数のメールアドレスでも確認済みです。(※すべて独自ドメインアドレス)

長くなってしまい申し訳ありません。どうぞ宜しくお願い致します。

@dounokouno
Owner

katuo様

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

具体的な現象ですが、SSLを入れると入力チェック(必須チェックなど)は動作するのですが、
項目も全て正しく入れた後に送信すると入力確認画面に行かず、入力画面に戻ってきます。
その際、各項目に入力した情報も残っています。

上記の動作から察するに、セッションの生成、管理に問題があるように思われます。

「iCLUSTA+レギュラープラン」はトライアル利用ができるようですので、一度、私の方でも動作テストを行ってみたいと思います。
動作テスト後、改めてコメントをさせていただきますね。

@katuo
katuo commented Jul 2, 2012

dounokouno 様

お手数おかけして申し訳ありません。ご対応ありがとうございます。
宜しくお願いいたします。

@dounokouno
Owner

katuo様

「iCLUSTA+レギュラープラン」にて動作確認を行ってみたところ、
katuo様のおっしゃる通り、入力確認画面に遷移することができませんでした。

検証を進めてみた結果、session周りにサーバー依存の問題があるように見受けられました。

問題となる箇所はsession_set_cookie_params関数だけでしたので、
conf/config.phpの102行目を下記のように修正してみてください。

修正前:

session_set_cookie_params(0, DIR_MAILFORM, $_SERVER['HTTP_HOST']);

修正後:

session_set_cookie_params(0);

差し当たり、私が借りたトライアルサーバーの環境では、正常に動作することを確認しております。

ちなみに、上記の修正内容による不具合等は恐らくないと思われます。
(sessionの有効範囲を限定できていないので、他のプログラムに影響が出る可能性も無くはないですが、よほどのことがない限り大丈夫だと思います。)

以上でございます。
ご確認をお願いいたします。

@katuo
katuo commented Jul 4, 2012

dounokouno 様

お世話になります。
頂きました箇所を修正しましたら、動作を確認することができました。

長いご対応を頂いてしまって申し訳ありません。助かりました!

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

@dounokouno
Owner

katuo様

お返事ありがとうございます。
無事動作したとのことで、安心いたしました。

また機会がございましたら、
使い勝手等のフィードバックをいただければ幸いでございます。

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

@sunzui
sunzui commented Jul 25, 2012

突然の御連絡で申し訳ありません。

自社テスト環境(さくらのマネージドサーバ)では正しく機能したのですが、クライアントにデータを提出、アップしていただいたところ

index.php が表示されず

HTTP エラー 500(Internal Server Error):

となります。

クライアントのサーバ管理会社からは

↓↓
設置されたPHPが、弊社サーバーにインストールされていないエクステンションを使用しているのかもしれません。

との回答があったそうなのですが、何か必須のエクステンションがございますでしょうか?

ご回答宜しくお願い致します。

@dounokouno
Owner

sunzui様

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

クライアントのサーバ管理会社からは

↓↓
設置されたPHPが、弊社サーバーにインストールされていないエクステンションを使用しているのかもしれません。

エクステンションは特に利用しておりません。

500エラーとのことで、
パーミッションの設定あたりが怪しいように思います。

よろしければ、下記点をご確認いただけますでしょうか?

  • ディレクトリやindex.phpのパーミッションは正しく設定されていますか? https://github.com/dounokouno/TransmitMail/wiki/設置方法
  • チェックモードは正しく表示されていますか?
  • logsディレクトリにエラーログは出力されていますか?
  • <?php echo 'test'; ?>のような単純なPHPは動作していますか?

また、サーバー側のエラーメッセージをご提示いただけましたら、
もう少し詳しいことが分かるかもしれません。

以上でございます。
それでは、どうぞよろしくお願いいたします。

@sunzui
sunzui commented Jul 30, 2012

dounokouno 様

先日はご対応いただきましてありがとうございます。

どうやら、クライアントが委託しているサーバの問題だったようです。

サーバーのデフォルト設定でsession supportがdisableになっていた。
session supportをenableにしましたのでこれで動作すると思います。

お騒がせしました。
ありがとうございました。

@dounokouno
Owner

sunzui様

わざわざご報告いただきありがとうございます。

おっしゃる通りsessionを利用しておりますので、
session supportをenableにしていただく必要がありますね。

ご報告いただいた内容は、
マニュアルに記載する等、活用をさせていただきたいと思います。

また何かご不明点等ございましたら、
どうぞお気軽にコメントくださいませ。

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

@anihiko
anihiko commented Sep 30, 2012

こんにちは。便利に使わせていただいております。
大変有益なシェアありがとうございます。

質問ですが、自動返信メールをtrueにして、メールアドレスが入力されていない場合
「送信先(フォーム内容を受け取るよう設定したメールアドレス)にメールを送る」
になっていますでしょうか?

これを、「もしメールアドレスが入力されていなければ、自動返信メールは送らない」にしたいのですが、どのようにすれば良いでしょうか?

お時間のある時にでもお答えいただければと思います。

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

@dounokouno
Owner

anihiko様

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

質問ですが、自動返信メールをtrueにして、メールアドレスが入力されていない場合
「送信先(フォーム内容を受け取るよう設定したメールアドレス)にメールを送る」
になっていますでしょうか?

はい、そのような仕様になっております。

これを、「もしメールアドレスが入力されていなければ、自動返信メールは送らない」にしたいのですが、どのようにすれば良いでしょうか?

よくよく考えますと、
メールアドレスが入力されていない場合は、
メールを送信する必要がないですね。

この件に関しましては、
近いうちに修正をしたいと思いますので、
修正完了まで、しばらくお待ちくださいませ。

@anihiko
anihiko commented Oct 1, 2012

dounokouno 様

早々の返答ありがとうございます。

phpの知識がほとんどないのですが、自分でできるのかな?と、index.phpをちょっと見てみたのですが、やっぱり駄目だーと思って、ご迷惑になるかとも思ったのですが、エイヤっと書き込みをしたのでした。

修正していただけるということで、大変うれしいです!

楽しみにしています。

anihiko

@dounokouno
Owner

anihiko様

自動返信メールに入力がない場合、
自動返信メールを送信しないように修正いたしました。

最新のコミット、もしくは1.0.9をダウンロードいただければ幸いです。

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

Tags · dounokouno/TransmitMail
https://github.com/dounokouno/TransmitMail/tags

ご不明点や不具合等ございましたら、
お気軽にお問い合わせいただければ幸いです。

@MICHIHIKO

いつも便利に使わせていただいております。
大変有益なものをありがとうございます。

今回クライアント様のサーバ(さくらインターネット)で設置した際に
入力→確認画面までは遷移するのですが
確認画面で送信すると500 Internet Server Errorになってしまいます。
上記にもあった際の確認事項のパーミッションの設定等はできており、
?mode=checkをした際にもすべてOKと出ています。
また、同じ内容の自社のテストサーバにアップした際は最後のまで遷移できるので
原因がよくわかりません。

ちなみにエラー文章は

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, support@sakura.ad.jp and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache/1.3.42 Server at **.co.jp Port 80

となります。

エラーログは
malformed header from script. Bad header=8-bit character in mailbox add: /home/ドメイン名/www/order/002/index.php

色々質問が素人レベルで申し訳ありませんが
ご回答宜しくお願い致します。

@MICHIHIKO

先ほどコメントしたものですが、調べているとさくらインターネットでは
パーミッション777に対応していないみたいです・・・。

http://sakura.cb-faq.com/faq/public/app/servlet/qadoc?QID=000279

この場合、このプログラムを使うことは不可能でしょうか・・・。

@dounokouno
Owner

MICHIHIKO様

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

エラーメッセージを拝見しますと、
メールの送信に失敗しているようです。

少し調べてみましたところ、
さくらのレンタルサーバーで運用しているドメインを、
メールのみGoogle Appsで運用している場合に、メールが送信できないケースがあるようです。
(Google Appsに限らず、メールをさくらのレンタルサーバー以外で運用されている場合、同様の症状が起こると思われます。)

さくらインターネットのPHPでMail関数を使うとInternal Server Errorになってしまう - longkey1::blog
http://blog.longkey1.net/archive/812

外部のSMTPを利用する件に関しましては、
いずれは対応したいと思っておりましたが、
今のところ、いつ対応できるか等、お約束をすることができません。

そこで、外部のSMTPを利用する以外の方法で、
いくつか対応方法を考えてみました。

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

  1. TransmitMailで送信する予定のメールアドレスをさくらのレンタルサーバーにも登録する

この場合、Google Apps等とは別にさくらのレンタルサーバー上のメールを読みにいく必要があります。
(メーラー等に設定できれば、運用はそれほど難しくないかもしれません。)

  1. 独自ドメインのさくらのレンタルサーバー以外にTransmitMailを設置する

あまり現実的ではないかもしれませんが…。
例えば、example.sakura.ne.jpのようなサブドメインであれば、TransmitMailからメールを送ることができるかもしれません。

  1. さくらのレンタルサーバーで管理している独自ドメイン以外のメールアドレスに送信する

既にお持ちのメールアドレスやGmail等で新規にメールアドレスを取得いただいて、
そのメールアドレスへメールが送信されるように設定をします。

以上でございます。
どうぞご検討くださいませ。

@MICHIHIKO

dounokouno様

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

現状ではメール送信エラーが出るにもかかわらず、
実際には入力者と登録したメールアドレスに届いているのが実際なんです。

いただいた対応方法に関しては、2のサブドメインも試そうと思ったのですが、結局さくらサーバだったのでダメでした・・・。違うサーバを使うのはクライアント的に難しいかと思われます。

3に関しましては、やってみたのですが、同じ症状でした・・・。

1に関しては、送っているメール自体がさくらのレンタルサーバに登録してあるメールアドレスでこの状態が起こっているので・・・。

Google Apps自体は使っていないと思うのですが、
やはり外部のSMTPを使う以外なさそうでしょうか・・・。

さくらのサーバがパーミッション777に対応していないというのは関係なさそうでしょうか?

いただいた対応策を元に色々試してみたいと思います。

ありがとうございます。

@dounokouno
Owner

MICHIHIKO様

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

現状ではメール送信エラーが出るにもかかわらず、
実際には入力者と登録したメールアドレスに届いているのが実際なんです。

実際にはメールが送信されているとのことですので、
メール送信時のプログラムを下記のように修正いただきますと、
エラー表示を抑制することが可能です。

お試しいただければ幸いでございます。

https://github.com/dounokouno/TransmitMail/blob/master/lib/common.php#L335

return @mail($to_email, $subject, $body, $headers, $params);

また、phpのsafe_modeがonの場合、
メールが送信時にエラーが発生するケースがあるようですので、
phpinfo等でsafe_modeがoffになっているかをご確認いただければ幸いでございます。

@dounokouno
Owner

MICHIHIKO様

さくらのサーバがパーミッション777に対応していないというのは関係なさそうでしょうか?

パーミッションの設定が間違っている場合、
確認画面に進むことができませんので、
今回のケースでは特に問題ないように思います。

@kao-aid
kao-aid commented Nov 2, 2012

はじめまして、フォームを利用させて頂いております。
PHP初心者の私にも優しいつくりで、とても助かっております。

一点お聞きしたく書き込みさせて頂きます。
初心者丸出しで申し訳ないのですが・・・、
config.phpの自動返信メールなのですが、
define('AUTO_REPLY_EMAIL', 'メールアドレス');
メールアドレスのほかに指定したメールアドレスに送信できる方法は
ありますでしょうか?

@dounokouno
Owner

kao-aid様

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

config.phpの自動返信メールなのですが、
define('AUTO_REPLY_EMAIL', 'メールアドレス');
メールアドレスのほかに指定したメールアドレスに送信できる方法は
ありますでしょうか?

管理者宛のメール(TO_EMAIL)ではなく、
メールフォームの入力者への自動返信メールを複数の宛先に送りたい、
ということでしたでしょうか?

現時点では、上記の機能はTransmitMailにはございません。

ちなみに、どのようなケースでのご利用を想定されていらっしゃいますでしょうか?

想定されるケースによっては、
カスタマイズいただくことで対応可能な場合がございますので、
お聞かせいただける範囲で構いませんので、想定ケースをご教示いただければ幸いです。

@kao-aid
kao-aid commented Nov 2, 2012

dounokouno様

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

>管理者宛のメール(TO_EMAIL)ではなく、
>メールフォームの入力者への自動返信メールを複数の宛先に送りたい、
>ということでしたでしょうか?

まさにその通りです。
やはり対応されてないのですね。了解いたしました。

クライアント様の要望で、管理者宛のメール(TO_EMAIL)だけでなく、
お問い合わせのあった方に送った自動返信メールを
自分宛にも送ってほしいとのご要望がありましたもので、
自動返信メールで、クライアント様宛にもメールを送れるようにできないものかと思案しておりました。

もう少し自分でも探してみます。

お忙しい中ご返答ありがとうございました。

@dounokouno
Owner

kao-aid様

クライアント様の要望で、管理者宛のメール(TO_EMAIL)だけでなく、
お問い合わせのあった方に送った自動返信メールを
自分宛にも送ってほしいとのご要望がありましたもので、
自動返信メールで、クライアント様宛にもメールを送れるようにできないものかと思案しておりました。

なかなか難しいご要望ですね…。

例えば、管理者宛のメールの内容と自動返信メールの内容を同じにすることで、
自動返信メールの内容が管理者に送られる、といった運用方法はいかがでしょうか?

もしくは、自動返信のメールの送信はindex.phpの下記の行からになりますので、
自動返信メールの送信処理の前後に、同じ内容を管理者宛に送っていただくようにカスタマイズいただくことで、
ご要望にかなうのかなと思っております。

ご検討いただければ幸いです。

https://github.com/dounokouno/TransmitMail/blob/master/index.php#L679

@kao-aid
kao-aid commented Nov 2, 2012

dounokouno様

ご返答ありがとうございます。
私自身も、dounokouno様のアイデアが一番良いのかなと思っておりました。

即答、感謝いたします。
本当にありがとうございました。フォームも大変使いやすく、重宝させて頂いております。
寒い季節になってまいりましたので、どうぞお体に気をつけて下さいませ。

@dounokouno
Owner

kao-aid様

寒い季節になってまいりましたので、どうぞお体に気をつけて下さいませ。

お気遣いいただきありがとうございます。
(あいにく、私は先々週に風邪を引いてしまいました…><)

kao-aid様も体調を崩されませぬよう、ご自愛くださいませ。

@go0014
go0014 commented Nov 13, 2012

初めまして。早速使わせていただきました。汎用性も高く痒いところまで手が届いており感動しました!

質問なのですが、ローカルでは確認画面には遷移できないのでしょうか?
(xamppを使っています)

@dounokouno
Owner

go0014様

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

XAMMPでも設定次第では動作すると思われます。

まずはエラー等表示されていないか、ご確認いただけますでしょうか?
エラーの表示はconf/config.phpの71行目を下記のように修正くださいませ。

ini_set('display_errors', 'On');

https://github.com/dounokouno/TransmitMail/blob/master/conf/config.php#L71

エラーが表示されやすくなるように、
conf/config.phpを修正しておりますので、
最新のデータをダウンロードいただいて試してみていただければ幸いです。

エラーが表示されない場合は、その旨、コメントいただければ幸いです。

@go0014
go0014 commented Nov 13, 2012

dounokouno様

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

最新のconfig.phpに差し替え、71行目を修正しましたが
画面は遷移せず、かつエラーも表示されませんでした。

全く同じファイルでWeb上では問題なく動きます。

こちらのXAMMPの設定の問題でしょうか?

宜しくお願い致します。

@dounokouno
Owner

go0014様

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

実際にどういった動作をするのか気になったので、
Windows 7にXAMPPをインストールして、動作確認をしてみました。

始めはgo0014様のおっしゃる通り確認画面に遷移できなかったのですが、
conf/config.phpをいじっていたら、いつの間にか確認画面に遷移できるようになりました…。

session周りがうまく動作していない場合に、
確認画面に遷移できないケースがありますので、
conf/config.phpの139行目〜142行目をコメントアウトしますと、
正常に動作するかもしれません。
(分かりやすいように、またconf/config.phpを少し修正しました。)
(上記をコメントいただいても、TransmitMailの動作には特に影響はありません。)

https://github.com/dounokouno/TransmitMail/blob/master/conf/config.php#L139

私は下記の環境にて、動作することを確認いたしました。
ご参考になれば幸いです。

  • OS:Windows 7
  • XAMPPのバージョン:1.8.1
  • PHPのバージョン:5.4.7
@go0014
go0014 commented Nov 13, 2012

dounokouno様

わざわざ試していただきありがとうございました!
無事遷移しました!

これはローカルのみで起こる現象という認識で良いのでしょうか?

サーバ上でも上記はコメントアウトしておいたほうが良いのでしょうか?

@dounokouno
Owner

go0014様

無事動作したようで安心いたしました。

サーバ上でも上記はコメントアウトしておいたほうが良いのでしょうか?

同じサーバーの他のアプリケーションと競合しないようにと思い記述している箇所ですので、
コメントアウトしておいていただいても特に動作には影響が無いかと思いますが、
できれば、コメントアウトしない状態にしていただいたほうが良いかと思います。

ちなみに、コメントアウトして確認画面に遷移することを確認して、
その後コメントを削除しても、確認画面に遷移できるようになったのですが、
go0014様の環境でもそのように動作しますでしょうか?
(Apacheを再起動しても確認画面に遷移でき、OSを再起動すると遷移できなくなりました。)

@dounokouno
Owner

go0014様

これはローカルのみで起こる現象という認識で良いのでしょうか?

今のところ、今回のXAMPPとGMOクラウドのiCLUSTA+にて、
同様の症状を確認しております。

恐らく、php.iniの設定だと思うのですが、
現時点では原因は明確に分かっておりません。

引き続き継続して調査をしていきたいと思います。

@go0014
go0014 commented Nov 13, 2012

dounokouno様

こちらではコメントを削除するとまた遷移できなくなりました。

OS:Windows7
XAMPP:1.7.7
PHP:5.3.8

です。

関係ないかもしれませんが、配下のフォルダにはWordpressが入っています。

@dounokouno
Owner

go0014様

こちらではコメントを削除するとまた遷移できなくなりました。

そうなんですね。
では、私の環境だけかもしれないですね。

関係ないかもしれませんが、配下のフォルダにはWordpressが入っています。

ちなみに、WordPressはXAMPPと公開サーバーとで動作に違いはないですよね?

多分、TransmitMailのsession周りに環境に依存するコードが入ってしまっているのだと思いますので、
WordPressのソースコードを読んで勉強してきます…。

@slutechform

dounokouno様

はじめまして、メールフォームを色々と探しておりましたらdounokouno様のTransmitMailが
非常に自分に合ったフォームだったので、早速テストで設置させていただきました。
すごく丁寧に書かれているコーディング、非常に設置しやすかったです!

お礼と感謝の意味を込めてコメントさせていただいた次第なのですが、
一つだけ伺いたいことがありまして、
宜しければご返答願いたいと思っております。

こちらのフォームには宛先がFromのみの設定になっておりますが、Cc、Bccを出来れば加えたいと思ってます。

無理難題を言いまして申し訳ございませんが、もし可能であればご教授いただきたいと思ってます。
何か対応方法がありましたら知恵をお貸しいただけませんでしょうか。

宜しく願います。

@dounokouno
Owner

slutechform様

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

こちらのフォームには宛先がFromのみの設定になっておりますが、Cc、Bccを出来れば加えたいと思ってます。

CC、BCCの機能はありませんが、
TO_EMAILに複数個のメールアドレスをカンマ区切りで入力していただくことで、
複数の宛先にメールを送信することが可能です。

https://github.com/dounokouno/TransmitMail/blob/master/conf/config.php#L18

またAUTO_REPLY_FROM_EMAILにメールアドレスを設定することで、
自動返信メールの送信元のメールアドレスは1つの状態で送信することが可能です。
(safe_modeがonの場合は、ご利用いただけません。)

https://github.com/dounokouno/TransmitMail/blob/master/conf/config.php#L33

上記の2つを利用することで、
CC、BCCのような運用ができるかと思いますが、いかがでしょうか?

ご確認いただければ幸いです。

@slutechform

dounokouno様

早速のご回答本当に感謝いたします。

おっしゃられる通りでして、機能としては十分に備わっているのでこちらでも対応できると思っていたのですが、
今回、BCCとCCを設置したく、ヘッダー情報を改変してみようと思いコードチェックしたのですが、
一つしかないため、自動返信も届いてしまうんです・・・

もう少しテストしながら、dounokouno様のお役に立てるようもう少し勉強いたします。
もし動作した次第は、またご連絡させていただきたいと思います。

「加えたい」というお気持ちを伺い、わたくし自身もこれから頑張ろうと思いました!!
このコメントでdounokouno様の人柄が伺えた感じがします・・・

この度は、ご返事有難うございました。

@dounokouno
Owner

slutechform様

おっしゃられる通りでして、機能としては十分に備わっているのでこちらでも対応できると思っていたのですが、
今回、BCCとCCを設置したく、ヘッダー情報を改変してみようと思いコードチェックしたのですが、
一つしかないため、自動返信も届いてしまうんです・・・

「複数の宛先に送信」ではなくCCやBCCにされたいとのことですが、
そのようにされたい理由としまして、
どのような運用方法をご検討されていらっしゃいますでしょうか?

差し支えない範囲で構いませんので、
お聞かせいただければ幸いです。

ちなみに、プログラムを編集される場合は、
メール送信の処理は下記の辺りです。

send_mail関数自体には管理者宛か自動返信かを判別するロジックがないため、
引数を追加する等が必要になるかと思います。

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

https://github.com/dounokouno/TransmitMail/blob/master/lib/common.php#L327
https://github.com/dounokouno/TransmitMail/blob/master/index.php#L635
https://github.com/dounokouno/TransmitMail/blob/master/index.php#L703

@slutechform

dounokouno様

再度ご返答どうも有難うございます。
あれからコードと見つめあいながらいくつか変数、条件の付け足しをし無事に解決できました!

設置用途につきましては、管理しているメールが複数ありまして、問合せ窓口と管理窓口が複数あり、
それぞれ同時に複数受信できる仕様が理想的だったので・・・
細かく説明すると難しいのでそんな感じです(苦笑

教えていただきましたコード部分の編集と追加、思考錯誤テストしながら何とか目的達成しました。
すごくフォームは理想的なコーディングをされておりましたので、勉強させていただきました。

何度もご丁寧に返答していただいたこと感謝致します。

@anihiko
anihiko commented Nov 22, 2012

tagawa�$BMM�(B

�$BJV?.$,$9$4!<$/CY$/$J$C$F?=$7Lu$J$$$G$9!#�(B

�$B$4BP1~$$$?$@$-$"$j$,$H$&$4$6$$$^$7$?!#�(B

�$B@_Dj$J$I$H$F$b$o$+$j$d$9$$$G$9$7!";H$$$d$9$$$N$G=u$+$j$^$9!#�(B

�$B$H$F$b$h$$%W%m%@%/%H$@$H;W$$$^$9$N$G!"$3$l$+$i$b$h$m$7$/$_4j$$$7$^$9!_�(B

anihiko

2012�$BG/�(B10�$B7n�(B1�$BF|�(B 22:05 tagawa notifications@github.com:

anihiko�$BMM�(B

�$B<+F0JV?.%a!<%k$KF~NO$,$J$$>l9g!"�(B
�$B<+F0JV?.%a!<%k$rAw?.$7$J$$$h$&$K=$@5$$$?$7$^$7$?!#�(B

�$B:G?7$N%3%_%C%H!"$b$7$/$O�(B1.0.9�$B$r%@%&%s%m!<%I$$$?$@$1$l$P9,$$$G$9!#�(B

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

Tags �$B!&�(B dounokouno/TransmitMail
https://github.com/dounokouno/TransmitMail/tags

�$B$4ITL@E@$dIT6q9gEy$4$6$$$^$7$?$i!"�(B
�$B$_5$7Z$K$_Ld$$9g$o$;$$$?$@$1$l$P9,$$$G$9!#�(B

�$B!=�(B
Reply to this email directly or view it on GitHubhttps://github.com/dounokouno/TransmitMail/issues/2#issuecomment-9030874.

@dounokouno
Owner

slutechform様

再度ご返答どうも有難うございます。
あれからコードと見つめあいながらいくつか変数、条件の付け足しをし無事に解決できました!

無事、解決したとのことで、安心いたしました。

設置用途につきましては、管理しているメールが複数ありまして、問合せ窓口と管理窓口が複数あり、
それぞれ同時に複数受信できる仕様が理想的だったので・・・
細かく説明すると難しいのでそんな感じです(苦笑

ご説明いただきありがとうございます。
今後の参考にさせていただきます。

@dounokouno
Owner

anihiko様のコメントはどういう状態なのでしょうか……。

@MICHIHIKO

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

現在違うサーバで、新たにこちらのメールフォームを使わせていただきたく
実装しているのですが、自動返信メールが送信に失敗してしまいます。

任意のメールアドレス宛に確認メールは届くのですが
自動返信だけ送信失敗になってしまいます。

色々試したのですが、どうしてもうまくいきません。
チェックモードでチェックしても特にNG項目は出ないのですが・・・。

何が原因とかはございますでしょうか?

@dounokouno
Owner

MICHIHIKO様

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

自動返信メールの送信に失敗するとのことですが、
ブラウザ上にメールの送信に失敗した旨のエラーメッセージは表示されていますでしょうか?

エラーメッセージが表示されない場合
config/config.phpの71行目のdisplay_errorsOnにしていただいて動作確認を行っていただいて、
ブラウザ上にエラーメッセージが表示されるか、ご確認いただけますでしょうか?

https://github.com/dounokouno/TransmitMail/blob/master/conf/config.php#L71

また、メールサーバーにGoogle Appsを利用している場合に、
TransmitMailを設置しているサーバーのDNSの関係でメール送信ができないケースがある、
という報告を受けております。

MICHIHIKO様がTransmitMailを設置されているWebサーバー、
メールサーバーはどのような構成でしたでしょうか?

差し支えない範囲で構いませんので、
お聞かせいただければ幸いです。

@MICHIHIKO

dounokouno様

ブラウザ上で、エラー画面が表示され自動返信メールが送信できませんでしたと表示されます。

またGoogleAppsは使用しておりません。
WEBサーバの構成、メールサーバの構成ですがよくわからないのが実際なんです・・・。

@koaya
koaya commented Dec 7, 2012

dounokouno様

はじめまして。
いつも便利に使わせていただいています。

質問なのですが、ラジオボタンを必須にすることは可能でしょうか。
よろしくお願いいたします。

@dounokouno
Owner

MICHIHIKO様

お返事が遅くなってしまい、申し訳ありません。

最近のバージョンからチェックモードにてsafe_modeをチェックできるようになったのですが、
safe_modeはoffになっておりますでしょうか?

また、もし他にメールアドレスをお持ちでしたら、
他のメールアドレスへは送信できるか、ご確認いただけますでしょうか?

@dounokouno
Owner

koaya様

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

質問なのですが、ラジオボタンを必須にすることは可能でしょうか。

はい、ラジオボタンも入力必須にすることが可能です。
記述方法は<input type="text">の場合と同じです。

ただし、基本的にラジオボタンは、常にどれかが選択されている状態になるため、
あまり使う機会は無いかもしれません……。

@koaya
koaya commented Dec 10, 2012

dounokouno様

早速のご返答ありがとうございました。
ラジオボタンが1つも選択されていない状態でフォームを表示し、
選択されなければエラーが出るようにしたかったのです。

記述方法はの場合と同じです。

との事で、上記のような設定が出来たのですが
例えば、ラジオボタンの他に入力ミスがありエラー表示が出た場合に
一度選択されていたラジオボタンがはずれてしまうのですが、
これは回避できますか?

よろしくお願いします。

@dounokouno
Owner

koaya様

TransmitMailは入力画面とエラー画面が同じのため、
入力画面(兼エラー画面)で入力内容を受け取る必要があります。

ラジオボタンの場合ですと、入力画面のテンプレートに下記のように記述いただくことで、
入力内容を受け取り、選択された状態にすることが可能です。

<input type="radio" name="性別" value="男性" {$checked.性別.男性}>男性
<input type="radio" name="性別" value="女性" {$checked.性別.女性}>女性

上記は性別を選択する場合の例ですが、
{$checked.name値.value値}という形に読み替えていただければと思います。

koaya様の記述されたテンプレートファイルに{$checked.name値.value値}が記述されているか、
ご確認をお願いいたします。

@koaya
koaya commented Dec 11, 2012

dounokouno様

お手数をおかけいたしましたが、再度コードを見直したところ無事にできました。
ありがとうございました。

@dounokouno
Owner

koaya様

無事実装できたとのことで、安心いたしました。
その他、ご不明点等ございましたら、どうぞお気軽にコメントいただければと思います。

また、機会がございましたら、使い勝手のご感想などお聞かせいただければ幸いです。

@bumpop
bumpop commented Jan 7, 2013

dounokouno様

先日メールクライアントの文字化けでお世話になったものです。ありがとうございました。
再度、別案件で設置させていただいているところですが、一点お聞きしたいとおもい、投稿させていただきます。

送信内容確認画面(confirm.html)から「送信する」をクリックしたときに画面遷移はするのですが、
画面が真っ白になってしまいます。
ただ、設定してあるメールアドレスには自動送信などのメールは送れ、受信できる状況です。

どのような原因が考えられるかご教示いただければ幸いです。
宜しくお願いいたします。

@hayashi-naoki

dounokouno様

はじめまして。
いつも便利に使わせていただいています。

config.phpで複数の宛先を指定し自動返信メールの宛先がないときに、送信するとエラーページが表示されます。
(メールは送信されてます)

config.phpには「空の場合、自動返信メールの宛先にメールが送信されます」とありますが、
実際には送信先メールアドレスが使用されているようで、差出人が複数になっています。

仕様の問題かもしれませんが、既定の差出人を設定するところはありませんか?

@dounokouno
Owner

bumpop様

お返事が遅くなってしまい申し訳ありません。

送信内容確認画面(confirm.html)から「送信する」をクリックしたときに画面遷移はするのですが、
画面が真っ白になってしまいます。

conf/config.phpの71行目のエラー表示をOnに設定した場合に、
エラーが表示されるか、ご確認をいただけますでしょうか?

https://github.com/dounokouno/TransmitMail/blob/master/conf/config.php#L71

ini_set('display_errors', 'On');

また、念のためチェックモード(index.php?mode=check)にて、
safe_modeがOffになっていることと、その他NGとなっている箇所が無いか、ご確認をお願いいたします。

ちなみに、設置されているサーバーはレンタルサーバーでしたでしょうか?

もしよろしければ、TransmitMaiを設置されているサーバーの、
サーバー会社やプラン名等をご教示いただければ幸いでございます。

@dounokouno
Owner

hayashi-naoki様

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

もしよろしければ、
メールアドレス等の情報はふせていただく形で構いませんので、
config.phpに記述されている内容をコメントいただくことは可能でしょうか?

どうぞご検討くださいませ。

@bumpop
bumpop commented Jan 26, 2013

dounokounoさま

ご回答ありがとうございます!
>conf/config.phpの71行目のエラー表示をOnに設定した場合
で試したところ、下記のエラー表示が確認できました。

Fatal error: Call to undefined function put_csv() in /home/users/1/moo.jp-xxx/web/xxx/contact/index.php on line 761

チェックモード(index.php?mode=check)でも同様のエラー表示となってしまいました。

サーバー情報ですが、レンタルサーバーでして、
ロリポップでコロリポプランになります。

再度、ご確認おねがいいたします。

@dounokouno
Owner

bumpop様

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

// エラーメッセージ部分にユーザー名と見受けられる箇所がありましたので、念のためxxxに置き換えさせていただきました。

Fatal error: Call to undefined function put_csv() in /home/users/1/moo.jp-xxx/web/xxx/contact/index.php on line 761

エラーメッセージを拝見しますと、
put_csv関数が見つからないようですね。

index.phpとlib/common.phpのどちらかを古いバージョンのものを使っていただいているようですので、
よろしければ最新のファイル一式をご利用いただければと思います。

最新のファイル一式でも動作しない場合は、
再度コメントいただければ幸いでございます。

@bumpop
bumpop commented Jan 28, 2013

dounokouno さま

再度、アドバイスいただいたように設定したところ画面遷移が正常に行え、メールも送受信できました!
まさか旧データだったとは。。ありがとうございました。今後ともよろしくおねがいします。

@dounokouno
Owner

bumpop様

無事、メールの送受信が行えたとのことで、安心いたしました。
またご不明点等ございましたら、どうぞお気軽にコメントくださいませ。

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

@nyahonyaho

はじめまして。
ホームページにメールフォームを設置したいと思い、
TransmitMailに辿りつきました。

初めてメールフォームを設置したのですが、
分かりやすい説明のおかげでスムーズに設置・テスト送信も完了して非常に満足しています。

現在は、デフォルトのコードのまま使用しているのですが、
【添付ファイル】の【必須化】には、コードをどのようにすればよいかご教授お願いいたします。

@dounokouno
Owner

nyahonyaho様

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

現在は、デフォルトのコードのまま使用しているのですが、
【添付ファイル】の【必須化】には、コードをどのようにすればよいかご教授お願いいたします。

大変申し訳ありませんが、
現時点では、添付ファイルの入力必須を判別する機能はございません。

今後のバージョンアップにて機能追加を検討して参ります。

また、ご自身でTransmitMailをカスタマイズされる場合は、
index.phpの392行目付近をご参考に、
コードを追加、修正いただければと思います。

https://github.com/dounokouno/TransmitMail/blob/master/index.php#L392

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

@nyahonyaho

bumpop様

お返事ありがとうございます。
必須が絶対必要という事は無いので、勉強しながら色々試してみようと思います。

この度は、忙しい中お返事していただきありがとうございました。

@sts999
sts999 commented Jan 30, 2013

こんばんは。
こちらのフォームにたどりつき、いいと思ったので設置を試みております。

ご質問です。
ラジオボタンの項目の一つにチェックを入れた場合に
一つのテキストフィールドを必須項目に変えたいです。
こちらは可能でしょうか?

@sts999
sts999 commented Jan 30, 2013

すいません、上の者です。
jqueryでdisabledしたら必須項目でも無効になったので解決しました。
今後も使用していきたいと思います。
ありがとうございます。

@dounokouno
Owner

sts999様

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

ラジオボタンの項目の一つにチェックを入れた場合に
一つのテキストフィールドを必須項目に変えたいです。
こちらは可能でしょうか?

すでに問題を解決されたようですが、
TransmitMail自体には上記の機能はございません。

コメントいただきました通り、
jQuery等で実装いただければと思います。

以上です。

その他ご不明点等ございましたら、
どうぞお気軽にコメントくださいませ。

@sts999
sts999 commented Feb 1, 2013

こんばんは。sts999です。
お忙しい中ご回答ありがとうございます。

すみません、質問というか要望になるかもしれません。
送信メールと自動返信メールに、問い合わせた時間を表示させたいのですが
こちらは可能でしょうか?

@dounokouno
Owner

sts999様

送信メールと自動返信メールに、問い合わせた時間を表示させたいのですが
こちらは可能でしょうか?

大変申し訳ありませんが、
現時点では、TransmitMail自体に上記の機能はございません。

今後のバージョンアップにて、機能追加を検討させていただきます。

ご自身でカスタマイズされる場合は、
index.phpの562行目辺りに「日時の取得」と「テンプレート変数へのセット」を行っていただき、
テンプレートから変数を取得、表示していただく流れになるかと思います。

https://github.com/dounokouno/TransmitMail/blob/master/index.php#L562

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

@reixx
reixx commented Feb 4, 2013

はじめまして。
こちらのフォームのカスタマイズ性がとても素晴らしく、説明の方もわかりやすくて、是非使用させていただきたいと思っています。
質問なのですが、フォーム部分がページの下部にある場合、入力確認画面から入力画面に戻る際やエラー表示の際に、フォーム部分を画面のトップに表示させたいのですが、そのようなことは可能でしょうか?

@dounokouno
Owner

reixx様

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

質問なのですが、フォーム部分がページの下部にある場合、入力確認画面から入力画面に戻る際やエラー表示の際に、フォーム部分を画面のトップに表示させたいのですが、そのようなことは可能でしょうか?

上記件に関しましては、
通常のHTMLのページ内リンクと同様に、
IDとハッシュを利用していただくことで、
IDの箇所にリンクさせることが可能でございます。

form要素自体にid属性を追加する場合は、
下記のようなコードになるかと思います。

<form method="post" action="index.php#form" id="form">

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

@reixx
reixx commented Feb 5, 2013

dounokouno様

ご回答ありがとうございました。
早速記述を追加したところ、意図通りの動きになりました。
ご丁寧にありがとうございます。

@sts999
sts999 commented Feb 6, 2013

こんばんわ。sts999です。

「日時の取得」と「テンプレート変数へのセット」のご教授ありがとうございます。
こちらはうまく出来ました。全体的にいじりやすいソースなので今後も使用させて頂きます。
ありがとうございます。

@Randing
Randing commented Jul 3, 2013

※下記、設置のミスでした、すみません。自己解決しました。
<input type="hidden" name="required[]" value="チェックボックス" />
{if:$required.チェックボックス}
<div class="error"><em>{$required.チェックボックス}</em></div>
{/if:$required.チェックボックス}

としなければならないところを、

<input type="hidden" name="required[]" value="チェックボックス[]" />
{if:$required.チェックボックス[]}
<div class="error"><em>{$required.チェックボックス[]}</em></div>
{/if:$required.チェックボックス[]}

としていたため為でした。
大変失礼いたしました。

dounokouno 様

始めて使わせていただいております、
様々なCGIやMT,wordpressでの運用も検討していたのですが
TransmitMail直感的で素晴らしいです。有り難うございます。

さて、フォームを構築していて、1点分からない点がありましたので
ご質問させてください。

checkbox のエラーに配列の [] が表示されてしまうのですが、
デフォルトの機能でこれを表示させない方法はございますでしょうか。
お手すきの際でかまいません、可能でしたらご回答いただけると幸いです。

@Randing
Randing commented Jul 3, 2013

dounokouno 様

先ほどから引き続き構築を進めていまして、
エラー画面を、確認(プレビュー)する方法が分からなかったのですが
ございますでしょうか?
度々の質問で恐れ入ります、可能でしたらご回答お願いいたします。

@dounokouno
Owner

Randing 様

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

チェックボックスの入力必須に関しましては、
自己解決されたとのことで安心いたしました。

エラー画面の表示方法に関しましては、
一番簡単な方法としましては、
アクセス元のIPアドレスをアクセス拒否していただく形かと存じます。

IPアドレスのアクセス拒否は、
conf/config.php の 73行目にて設定いただけます。

ご確認いただければ幸いでございます。

https://github.com/dounokouno/TransmitMail/blob/master/conf/config.php#L73

@Randing
Randing commented Jul 3, 2013

dounokouno 様

早速に解決方法をご案内いただき有り難うございます。
やってみます。

先ほど設置完了しまして、動作も快調です。感謝いたします。

@salty403

はじめまして。
TransmitMailを使用させていただいております。
便利なものをありがとうございます。

質問させていただきます。
config.phpよりテンプレートファイル「TMPL_INPUT」に設定したhtmlファイル内にincludeで他のphpファイルを読み込ませています。
そのphp部分がコメントアウトの非表示になってしまいます。

実際のソースコード

index.phpから読み込み時のブラウザから取得したコード

別のページではincludeは正常にされております。
原因はお分かりになるでしょうか。
よろしくお願い致します。

@dounokouno
Owner

salty403 様

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

TransmitMailで利用しているテンプレートエンジンの関係で、
テンプレートファイル内では、任意のphpは実行ができない仕様となっております。

include関数を利用されたいとのことですので、
恐らく共通ファイルを読み込むようなことをされたいのではと想像をしております。

1つの方法としましては、
index.phptransmitmail.php のようなファイル名にリネームしていただいて、
index.php を新規作成し、input.php 内で transmitmail.php とテンプレートファイル側で読み込みたいファイルをインクルードする、といった方法がございます。

また、各テンプレートファイルは、それぞれが単体で完全なHTML(という説明でわかりますでしょうか…。)でなくても構いませんので、
メールフォーム部分(table要素やform要素やそれらを囲むdv要素など)だけを記述いただく形にしていただいて、
上記の index.php にHTMLやphpの処理を記述いただいてもよいかもしれません。

index.php の記述例:

<html>
    <head></head>
    <body>
        <!-- 任意のhtml -->
        <header></headder>
        <!-- /任意のhtml -->
        <php
        // TransmitMail本体の読み込み
        include 'transmitmail.php'; ?>

        // 任意のPHPを実行
        include 'xxx.php'; ?>
        <!-- 任意のhtml -->
        <footer></footer>
        <!-- /任意のhtml -->
    </body>
</html>

※上記コードはあくまでサンプルです。動作確認は行っておりませんので、あらかじめご了承くださいませ。

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

@ieks1897

dounokouno 様

はじめてコメントさせて頂きます。
こちらの素晴らしいメールフォームを是非使用させて頂きたいと思っております。

設置したのですが動作せず、以前のコメントを見て症状が似ていたので

修正前:session_set_cookie_params(0, DIR_MAILFORM, $_SERVER['HTTP_HOST']);
修正後:session_set_cookie_params(0);

上記を修正して動作するようになったのですが、添付画像の部分でエラーになってしまいます。
ファイルの上限サイズを変更しているのですが、サイズの大きい画像を添付すると、完了画面に移行せず真っ白の画面になってしまいます。
(メールに関しては、送信先メールに設定したアドレスにメールは届くのですが、自動返信メールは届かない。)
エラーは以下のように出ます。

Strict Standards: Declaration of QdmailComponent::smtpObject() should be compatible with that of QdmailBase::smtpObject() in /virtual/xxx/home/xxx.jp/sp/test/TransmitMail/lib/qdmail.php on line 3734

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /virtual/xxx/home/xxx.jp/sp/test/TransmitMail/lib/qdmail.php:3734) in /virtual/xxx/home/xxx.jp/sp/test/TransmitMail/index.php on line 487

Warning: Cannot modify header information - headers already sent by (output started at /virtual/xxx/home/xxx.jp/sp/test/TransmitMail/lib/qdmail.php:3734) in /virtual/xxx/home/xxx.jp/sp/test/TransmitMail/index.php on line 552

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 574234 bytes) in /virtual/xxx/home/xxx.jp/sp/test/TransmitMail/lib/qdmail.php on line 3503

サーバー:WebARENA「SuiteX」
PHPのバージョン:5.3
チェックモードですべてOKでsafe_modeはOff

お忙しいとは思いますが、是非ご教授お願いいたします。

@dounokouno
Owner

ieks1897様

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

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 574234 bytes) in /virtual/xxx/home/xxx.jp/sp/test/TransmitMail/lib/qdmail.php on line 3503

上記エラーを拝見しますと、
サーバー側のメモリーサイズの容量制限にひっかかってしまっているようです。

一度、phpinfo関数にてmemory_limitの値を確認していただき、
config.phpに下記1行を追加いただき、
再度、phpinfo関数のmemory_limitの値をご確認いただき、
memory_limitの値か更新されているか、ご確認をお願いいたします。

ini_set('memory_limit', '10M');

memory_limitの値が更新されていることが確認できましたら、
その状態で再度、TransmitMailの動作確認を行っていただければと思います。

10Mの部分は、添付したいファイル容量に合わせて変更いただければと思います。
※ただ、ieks1897様は8MBのファイルを添付しようとされていますが、メールサーバーによってはあまり大きなファイル容量の添付ファイルを送信できない、受け取れないケースもあるかと思いますので、ご注意いただければと思います。

@ieks1897
ieks1897 commented Oct 1, 2013

dounokouno 様

お忙しい中ご回答ありがとうございます!
ご指示通り以下をconfig.phpに追加してメモリーサイズを調整しましたら無事に動作いたしました!
ini_set('memory_limit', '○○M');

ひとつ気になったのですが、
上記のエラーは、「400KB」程度の画像2枚を添付した時に表示されました。
サーバー側のメモリーサイズ制限である8MBは超えていないのですが・・・

原因お分かりになりますでしょうか?

@dounokouno
Owner

ieks1897様

ご指示通り以下をconfig.phpに追加してメモリーサイズを調整しましたら無事に動作いたしました!

上記件、ご報告いただきありがとうございます。
無事動作したとのことで、安心いたしました。

ひとつ気になったのですが、
上記のエラーは、「400KB」程度の画像2枚を添付した時に表示されました。
サーバー側のメモリーサイズ制限である8MBは超えていないのですが・・・

上記件に関しましては、
あくまでメモリーサイズであり、添付ファイルの容量ではありませんので、
添付ファイル以外の部分でメモリーを多く使ってしまっているのかもしれません。

また時間を見つけて、どの部分でメモリーを多く使ってしまっているか等、
調査をしてみたいと思います。

@ieks1897
ieks1897 commented Oct 1, 2013

dounokouno 様

添付ファイルの容量だけではないという事なのですね。

この度は迅速なご対応いただきましてありがとうございました!
重ね重ね御礼申し上げます。

@ieks1897

dounokouno 様

先日はご対応ありがとうございました。
以前ご質問しましたieks1897と申します。
設置完了しまして、動作も快調で便利に使わせて頂いております。

一つお伺いしたいのですが、
画像を添付して送信した時、自動返信メールに画像が添付されないようにする事はできますでしょうか?

度々で申し訳ないのですが、是非ご教授いただけないでしょうか。

@dounokouno
Owner

ieks1897 様

画像を添付して送信した時、自動返信メールに画像が添付されないようにする事はできますでしょうか?

上記件に関しましては、
現時点では設定等で変更できるような機能はございませんので、
プログラム自体をカスタマイズしていただく形になるかと思います。

例えば、index.phpの808行目あたりに、
下記のようなコードを追加いただくと、
自動返信メールからファイル添付を無くすことができるかと存じます。
(動作確認は行っておりません。)

if (FILE) {
    $mail->attach(array());
}

https://github.com/dounokouno/TransmitMail/blob/master/index.php#L808

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

@dounokouno
Owner

@neldrip

なかなか難しいカスタマイズですね...。PHPをそれなりに理解されていないと、このカスタマイズは難しいかもしれません...。

・サーバーの画像保存フォルダからファイルを一括ダウンロードするようにしたいのですが、一時的にではなく、期限なしで画像保存をする方法はありますでしょうか?

添付ファイルの削除は下記で行っていますので、該当箇所をコメントアウト等することで添付ファイルはサーバーから削除されなくなります。

https://github.com/dounokouno/TransmitMail/blob/master/lib/TransmitMail.php#L985

・ファイルをサーバーに保存する場合に、応募者情報とファイル名を紐付けるために「応募者氏名+ランダム文字列」のような保存を行いたいのですが、どの部分を変更すればよいのでしょうか?

添付ファイルの命名は下記あたりで行っています。

https://github.com/dounokouno/TransmitMail/blob/master/lib/TransmitMail.php#L781

・CSVファイルに添付ファイルURLを追記したいのですが、どの部分を変更すればよいのでしょうか?

CSV出力は下記辺りで行っています。

https://github.com/dounokouno/TransmitMail/blob/master/lib/TransmitMail.php#L992

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

@neldrip
neldrip commented May 17, 2016

お忙しい中、迅速なご対応ありがとうございます。
教えていただいた箇所を修正しながら作業した所、添付ファイルの削除をしなくする処理と、アップロードされるファイル名の変更は行えました!
もしよろしければ、上記の修正を行った所、確認画面で画像が表示されなくなってしまったのですが、こちらについてはどのあたりのソースを変更すればよいかも教えていただけますでしょうか?

@dounokouno
Owner

@neldrip

上記の修正を行った所、確認画面で画像が表示されなくなってしまったのですが、こちらについてはどのあたりのソースを変更すればよいかも教えていただけますでしょうか?

どのように修正を行ったか、可能な範囲でコードを貼り付けていただくことは可能でしょうか?

@neldrip
neldrip commented May 18, 2016

ご連絡ありがとうございます。
TransmitMail.phpの790行目近辺を、応募者氏名を付加するように下記のような修正を行いました。

// エラーが無い場合、ファイルを$config['tmp_dir']に移動
$tmp_name =$order_name. $this->config['file_name_prefix'] . uniqid(rand()) .'_' . $value['name'];

order_nameについては、サーバーのファイルが文字化けしないようにエンコード処理を事前にしております。
現状としては、サーバーに文字化けしないファイルが作成されているのですが、
確認画面の画像が下記のような出力になりリンク切れになっている状態です。

修正箇所が悪いか、もしくは修正が足りないかのどちらかだと思うのですが、なかなかうまく動作しない状態です。
もしよろしければご指導願います。

@dounokouno
Owner

@neldrip

出力が <img src="index.php?file=" width="300"> のようになるとのことですが、 index.php?file= の後ろに文字列が出力されていない、という認識であっていますでしょうか?

また、各種カスタマイズを行う前は想定通り画像が表示されていますでしょうか?

@neldrip
neldrip commented May 18, 2016

dounokouno様

ご連絡ありがとうございます。
現在は index.php?file= の後ろに文字列が出力されていない状態です。

カスタマイズ前は表示されていました。
もう一度上記一行を元に戻して確認した所、正常に画像表示が行えました。

たぶん修正が足りていないのだと思うのですが他に変更する箇所などはありますでしょうか?

@dounokouno
Owner

@neldrip

うーん、わからないです...。

(設定ファイルは何で作られているかわかりませんが) display_errortrue にしてみて、何かエラーは表示されないでしょうか?

@neldrip
neldrip commented May 18, 2016

dounokouno様

ご連絡ありがとうございます。
試しに応募者氏名を英語のみで実行した所、正常に画像が表示されました。
日本語のファイル名が入っている場合のみ index.php?file= の後ろに文字列が表示されないようでした。
日本語ファイル名を文字化けさせないためにorder_name部分のみエンコード処理をやっている影響でしょうか?
$order_name=mb_convert_encoding($order_name, "cp932", "utf8");

@dounokouno
Owner

@neldrip

試しに応募者氏名を英語のみで実行した所、正常に画像が表示されました。

ご確認ありがとうございます。

日本語ファイル名を文字化けさせないためにorder_name部分のみエンコード処理をやっている影響でしょうか?

私個人がエンコーディング周りはあまり詳しくないもので、よくわかりません...。

ただ、 TransmitMail 自体と各種入出力は UTF-8 を想定していますので、他のエンコーディング形式をうまく扱えていない、といったことはあるかもしれません。

ちなみに、エンコーディングしないとファイルの方が文字化けしてしまうのでしょうか...?

また、 mb_convert_encoding ではなく urlencode を使うというのも一つ手かもしれません。

http://php.net/manual/ja/function.urlencode.php

ご参考までに。

@neldrip
neldrip commented May 18, 2016

dounokouno様

ご連絡ありがとうございます。
エンコーディングしないと日本語ファイル名が文字化けしてしまいました。

UTF-8を想定している所に、エンコーディングしてしまったが原因そうですね。
教えていただいた方法も試してみます!
細かい点までご指導ありがとうございました。

@neldrip
neldrip commented May 18, 2016

dounokouno様

たびたび申し訳ありません。
もう一点お教え願います。

ファイル名をそのまま日本語で保存するのは難しそうなので、URLエンコードしたファイル名で保存し、
ダウンロード後にファイル名をデコードする方式に変更するようにしました。
そのためmb_convert_encodingはやめて、urlencode を使うようにした所、
ファイルのアップロードと、 index.php?file= の後ろにエンコードしたファイル名が表示されるところまできたのですが、それぞれの名称は完全に一致しているのですが、まだリンク切れとして表示されます。

この現象の場合、何か見たほうが良い箇所などはありますでしょうか?

display_error は true にしてありますが、何も表示されませんでした。

@dounokouno
Owner

@neldrip

index.php?file=... にブラウザでアクセスして、画像は表示されますでしょうか?

@neldrip
neldrip commented May 18, 2016

dounokouno様

ご連絡ありがとうございます。

実行した所以下のエラーが表示されました。

エラーが発生しました
お手数をおかけしますが、再度、お問い合わせフォームからお問い合わせいただくか、下記メールアドレスよりお問い合わせください。
日本語ファイル名.jpg

@dounokouno
Owner

@neldrip

ファイルの存在確認は下記の行あたりで行っていますので、 $file_pathbasename($this->get['file']) の内容を確認いただくことで、何かヒントになるかもしれません。

https://github.com/dounokouno/TransmitMail/blob/master/lib/TransmitMail.php#L956

$this->get['file']urlencode が必要なのかもしれません。想像ですが...。)

@neldrip
neldrip commented May 18, 2016

dounokouno様

ご連絡ありがとうございます。
ご指示いただいた通り下記のように対応した所、正しく動作しました!!
// ファイル表示
$file_path = $this->config['tmp_dir'] . urlencode(basename($this->get['file']));

何回もご指導いただき本当にありがとうございます。
これで細かい設定を進めていけます!

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

@koiyu9215

dounokouno様

お世話になります。
いつもこちらのフォームを使用させて頂いています。

今回はinput.htmlでのif文についての質問をいたします。

入力画面の入力オプション等で入力チェックやファイル添付する際に

{if:$ファイル1}
{$ファイル1.name}
{/if:$ファイル1}

上記のようなif文が良く書かれていますが、
このif文内でelseを設定することは出来るのでしょうか?

例:ifの中にelseを書く
{if:$ファイル1}
{$ファイル1.name}
{else:$ファイル1}
ファイルが選択されていません。
{/else:$ファイル1}
{/if:$ファイル1}

また{if:$ファイル1}の中身がない(null)場合のif文はどうやって書けばよろしいのでしょうか?

例1:$ファイル1に.nullを設定する
{if:$ファイル1.null}
{$ファイル1.name}
{else:$ファイル1}
ファイルが選択されていません。
{/else:$ファイル1}
{/if:$ファイル1.null}

例2:$ファイル1の前に!を設定する
{if:!$ファイル1}
{$ファイル1.name}
{else:$ファイル1}
ファイルが選択されていません。
{/else:$ファイル1}
{/if:!$ファイル1}

ご返信頂けると幸いです。よろしくお願い致します。

@dounokouno
Owner

@koiyu9215

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

テンプレートエンジンには tinyTemplate を利用していますので、 tinyTemplate に実装されている else を利用することが可能です。

詳しくは tinyTemplate の if 文のサンプルをご確認いただければと思います。

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

@koiyu9215

dounokouno様
お世話になっております。
ご連絡ありがとうございます。

dounokouno様から頂いた情報を元に早速試してみたいと思います。
ありがとうございました。

2016年6月1日 14:59 tagawa notifications@github.com:

@koiyu9215 https://github.com/koiyu9215

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

テンプレートエンジンには tinyTemplate https://github.com/miya0001/tinyTemplate
を利用していますので、 tinyTemplate に実装されている else を利用することが可能です。

詳しくは tinyTemplate の if 文のサンプルをご確認いただければと思います。

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


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#2 (comment),
or mute the thread
https://github.com/notifications/unsubscribe/AKjqbp1vaALxPPnxPOdzu5jifPc-6zekks5qHR_GgaJpZM1jeA==
.

@code0526

dounokouno様

お世話になります。
いつもTransmitMailを使用させて頂いています。

早速ですがv2で件名とメール本文に送信日時を追加したいと考えております。
その場合どのようにカスタマイズすれば良いかご教授頂けますでしょうか。

それから「日付+シリアル番号付与」ということも
カスタマイズによって実現する事は可能でしょうか。

お忙しいところ恐縮ですが、ご返信頂けると幸いです。
宜しくお願い致します。

@dounokouno
Owner
dounokouno commented Jun 10, 2016 edited

@code0526

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

ご質問の件ですが、どちらもカスタマイズで対応可能です。

早速ですがv2で件名とメール本文に送信日時を追加したいと考えております。
その場合どのようにカスタマイズすれば良いかご教授頂けますでしょうか。

件名は下記あたりで設定を行っています。

メール本文は書き辺りです。

TransmitMail クラスを継承してメソッドをオーバーライドしたり、 afterXXX メソッドを利用した方が後々のバージョンアップが楽ですが、そこはお好みでご対応ください。

参考: http://qiita.com/dounokouno/items/c76d6b7053200c476d6d

それから「日付+シリアル番号付与」ということも
カスタマイズによって実現する事は可能でしょうか。

上記もカスタマイズで対応可能です。

「シリアル番号」はフォームの送信順で1から順番に連番で付与されるような仕様でしょうか?

上記仕様の場合、現在のシリアル番号を保存するファイルが必要だったりしますが、適宜ファイルを作れば対応可能かと思います。

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

@code0526

dounokouno様

お世話になっております。
早々のご連絡ありがとうございます。

頂いた情報を元にカスタマイズを試してみたいと思います。

この度は、お忙しいところご返答頂き、ありがとうございました。

@code0526

dounokouno 様

お世話になっております。
先日はご返答いただき「送信日時の追加」に関しては対応する事ができました。
ありがとうございます。

またしても質問で恐縮なのですが、
「form/confirm/」のように確認、完了画面のURLを変更する事は可能でしょうか?
可能な場合どのうよに設置すれば良いかご教授頂けますでしょうか。

お忙しいところお手数お掛けしますが、宜しくお願い致します。

@dounokouno
Owner

@code0526

「form/confirm/」のように確認、完了画面のURLを変更する事は可能でしょうか?

上記のようにカスタマイズすることは可能ではあると思うのですが、カスタマイズは結構大変そうです...。

Googleアナリティクスで「入力確認画面」や「送信完了画面」への遷移を取得したい、ということでしたら、簡単な方法としましては form 要素の action 属性にパラメータを追加する方法があります。

例えばですが、各画面の form 要素の action 属性を下記のように記述します。

入力画面

<form method="post" action="index.php?confirm">

入力確認画面

入力画面に戻るフォーム

<form method="post" action="index.php?confirm">

送信するフォーム

<form method="post" action="index.php?finish">

上記の例では「入力エラー画面」と「入力確認画面」はどちらも index.php?confirm になりますが、この方法では「入力エラー画面」と「入力確認画面」を区別することはできませんので、予めご了承ください。

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

@code0526

dounokouno様

お世話になっております。
ご連絡ありがとうございます。

>上記のようにカスタマイズすることは可能ではあると思うのですが、カスタマイズは結構大変そうです...。

やはりこのようなカスタマイズはかなり難しい作業なのですね。
対応方法を検討したいと思います。

お忙しいところご返答頂き、ありがとうございました。

@code0526

dounokouno様

お世話になっております。
たびたびの質問で、申し訳ありません。

完了画面のみ「finish.php」のようなファイルに
飛ばすカスタマイズもかなり難しいのでしょうか?

無理難題を申しまして大変恐縮ですが、
もし可能であればご教授頂ければと思います。

お忙しいところお手数お掛けしますが、宜しくお願い致します。

@dounokouno
Owner

@code0526

完了画面のみ「finish.php」のようなファイルに
飛ばすカスタマイズもかなり難しいのでしょうか?

index.php と同じファイルを finish.php というファイル名で作成して、「入力確認画面」の送信する form の action を finish.php にすれば、それで動作するような気がします。

私の方では動作未確認ですが、ご確認いただければ幸いです。

@code0526

dounokouno様

お世話になっております。
ご連絡ありがとうございます。

頂いた情報を元にカスタマイズを試してみたいと思います。
上記内容で不明点があった場合、また質問させて頂きたいのですが宜しいでしょうか。

お忙しいところご返答頂き、ありがとうございました。

@dounokouno
Owner

@code0526

上記内容で不明点があった場合、また質問させて頂きたいのですが宜しいでしょうか。

はい、私のわかる範囲でしたらお答えしますよー。

@code0526

dounokouno様

お世話になっております。
ご連絡ありがとうございます。

ご教授頂いた方法で目的のカスタマイズが実現する事が出来ました。
大変助かりました。

本当にありがとうございました。

@nkoichiro

dounokouno様

お世話になっております。

いつも愛用させていただいております。

本プログラムをインストールするにあたって、
必須となるPHPモジュールはございますか?

新規PHPをインストールするクライアントに対して、説明を求められており
ImageMagickやMySQLは必要ないのではと指摘され、確認したく思っています。

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

@dounokouno
Owner

@nkoichiro

本プログラムをインストールするにあたって、
必須となるPHPモジュールはございますか?

おそらく、 mbstring くらいだと思います。 ImageMagick と MySQL は必要ありません。

@nkoichiro

@dounokouno

早速の尾ご回答ありがとうございます!

ピックアップしてみたのですが、やはりmbstringぐらいでしょうか?
しつこくて恐縮ですが、念の為ご確認お願いいたします。

  • bcmath
  • bz2
  • calendar
  • cgi-fcgi
  • ctype
  • curl
  • date
  • dom
  • ereg
  • exif
  • fileinfo
  • filter
  • gd
  • gettext
  • hash
  • iconv
  • imap
  • libxml
  • mbstring
  • mcrypt
  • mhash
  • openssl
  • pcre
  • PDO
  • Phar
  • posix
  • pspell
  • Reflection
  • session
  • SimpleXML
  • soap
  • SPL
  • standard
  • tokenizer
  • zlib
@dounokouno
Owner
dounokouno commented Jul 15, 2016 edited

@nkoichiro

私は普段、レンタルサーバーを使うので、あまり PHP のモジュールについて詳しくないのですが...^^;

上記の中ですと session は必要そうです。あとは無くても動作する気がしますが、上記の通りあまり詳しくないもので、正確でないかもしれませんm(_ _)m

@nkoichiro

@dounokouno

ありがとうございます。

一度試してみます。

迅速にありがとうございました。

@ichinisanma

dounokouno様

お世話になっております。

いつも愛用させていただいております。

他デモサーバーで正常に動作していたのですが、サクラサーバーへ移行したところ、

HTTP ERROR 500

となり、正常に表示されません。

パーミッションは以下の様になっております。

configフォルダ:705
 └以下のファイル:705
libフォルダ:705
 └以下のファイル:705
logフォルダ:707
 └.htaccess:705
tmpフォルダ:707
 └.htaccess:705

/confirm.html:705
/error.html:705
/finish.html:705
/index.php:705
/input.html:705

チェックモードにつきましても、同様正常に表示されません。
logディレクトリにはエラーログが出力されていません。
phpにつきましては、phpinfo();で動いております。
Session Supportにつきましては、「enabled」となっております。

お手数をお掛けしますが、宜しくお願い致します。

@ichinisanma

dounokouno様

お世話になっております。ichinisanmaです。

上記件につきまして、追記の方をさせていただきます。

サーバーのエラーログにつきましては、とくに出力されていない状態となっております。。

@dounokouno
Owner

@ichinisanma

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

まずはいくつか確認をさせていただきたく思います。

  • PHP のバージョンはいくつでしょうか?
  • index.php と同階層に phpinfo(); を実行するようなファイルを置いて、そのファイルは想定通り動作しますでしょうか?

まずは上記二点のご確認をお願いいたします。

@ichinisanma

dounokouno様

早急にご確認いただきありがとうございます。
dounokouno様のご指摘いただきました通り、PHPのバージョンが原因となっておりました。。

ご丁寧にご指摘いただきありがとうございました。
今後とも宜しくお願い致します。

@kov0530
kov0530 commented Aug 18, 2016 edited

dounokouno様

お世話になっております。
kov0530です。

生年月日などの日数をselectタグで複数設置したいのですが
複数置くと一番最後に選択したselectタグにすべて上書きされてしまいます。

何か方法ありませんか?
宜しくお願い致します。

@dounokouno
Owner

@kov0530

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

TransmitMail では同じ name 値の入力パーツを複数設置することができません。(TransmitMail に限らずですが...。)

ですので、 name 値を変えていただくことでご対応いただければと思います。

<select name="年1">
    <option value="1980" {$selected.年1.1980}>1980</option>
</select>

<select name="年2">
    <option value="1980" {$selected.年2.1980}>1980</option>
</select>
@kov0530
kov0530 commented Aug 18, 2016 edited

dounokouno様

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

input.phpでこのように記入

  <div class="form-group">
    <label for="birth" class="control-label col-sm-2">生年月日<span class="text-warning">(必須)</span></label>
    <div class="col-sm-8">
        <select name="年A" class="form-control" style="width: 100px; display:inline-block;">
            <option value="" {$selected.default}>年</option>
            <option value="2000" {$selected.年A.2000}>2000</option>
            <option value="2001" {$selected.年A.2001}>2001</option>
        </select>
        <input type="hidden" name="required[]" value="年A" />
        {if:$required.年A}
        <div class="error"><em>{$required.年A}</em></div>
        {/if:$required.年A}年
        <select name="月A" class="form-control" style="width: 100px; display:inline-block;">
            <option value="" {$selected.default}>月</option>
            <option value="1" {$selected.月A.1}>1</option>
            <option value="2" {$selected.月A.1}>2</option>
        </select>
        <input type="hidden" name="required[]" value="月A" />
        {if:$required.月A}
        <div class="error"><em>{$required.月}</em></div>
        {/if:$required.月A}月
        <select name="日A" class="form-control" style="width: 100px; display:inline-block;">
            <option value="" {$selected.default}>日</option>
            <option value="10" {$selected.日A.10}>10</option>
            <option value="11" {$selected.日A.11}>11</option>
        </select>
        <input type="hidden" name="required[]" value="日A" />
        {if:$required.日A}
        <div class="error"><em>{$required.日A}</em></div>
        {/if:$required.日A}日
    </div>
  </div>

confrim.phpでこのように記入

<tr>
    <th>生年月日</th>
  <td>{$年A.value}&nbsp;{$年A.key}&nbsp;{$月A.value}&nbsp;{$月A.key}&nbsp;{$日A.value}&nbsp;{$日A.key}&nbsp;</td>
</tr>

それを出力すると結果が下記のようになります。

【生年月日2000 年A 1 月A 10 日A 】

Aを表示させないようにできますか?
質問ばかりで申し訳ございません。

@dounokouno
Owner

@kov0530

個別出力を利用されているようですので、 {$年A.key} などを利用せずに

<tr>
    <th>生年月日</th>
  <td>{$年A.value}&nbsp;&nbsp;{$月A.value}&nbsp;&nbsp;{$日A.value}&nbsp;&nbsp;</td>
</tr>

と記述いただくことで対応可能です。

@segurock

@dounokouno

いつもこちらのプログラムにお世話になっております。
今回初めてHetemlで使用しようとしたのですが、エラーが発生してメールが送れない状況になりまして、ご教授いただけたらと思いましてご質問させていただきました。

php 5.6
TransmitMail 2.0.8

config には、
 $config['to_email']
 $config['to_subject']
 $config['auto_reply_subject']
 $config['auto_reply_name']
のみを設定しています。

input.php では
 ニックネーム
 メールアドレス
のみを入力させています。

/log/qdmail_error.log が書き出され、内容は下記のとおりです。

2016-08-18 22:36:17
Qdmail error: Qdmail Version 1.2.6b ,PHP Version 5.6.21
Qdmail error: OS Linux ; PHP Version 5.6.21 ; Qdmail version 1.2.6b
php.ini status: mb_language = Japanese ; mb_internal_encoding = UTF-8 ; mb_detect_order = ASCII,JIS,UTF-8,EUC-JP,SJIS
Qdmail Status debug: 0, log: 0, errorlog: 3
Qdmail error: No send . Because PHP mail function replied error line -> 2190
To: oooo@gmail.com
Subject: =?iso-2022-jp?B?GyRCIU4bKEJTdGFyYnVja3MgU2VuZCBZb3VyIFRoYW5rcxskQiFPGyhC?=
    =?iso-2022-jp?B?GyRCRXZBKjxUTU1NUTF+SmclVSUpITwlYCRoJGpBdz8uGyhC?=
From: oooo@gmail.com
Message-Id: <Qdmail.1.2.6b_b252205c9afc5160ef74c70ff2dc834d8c2a4836@hal456.net>
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0
X-PHP-Qdmail: version-1.2.6b The_MIT_License http://hal456.net/qdmail PHPver 5.6.21
    send-by MailFunction
2016-08-18 22:36:17
Qdmail error: Send Error line -> 2115
To: oooo@gmail.com
Subject: =?iso-2022-jp?B?GyRCIU4bKEJTdGFyYnVja3MgU2VuZCBZb3VyIFRoYW5rcxskQiFPGyhC?=
    =?iso-2022-jp?B?GyRCRXZBKjxUTU1NUTF+SmclVSUpITwlYCRoJGpBdz8uGyhC?=
From: oooo@gmail.com
Message-Id: <Qdmail.1.2.6b_b252205c9afc5160ef74c70ff2dc834d8c2a4836@hal456.net>
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0
X-PHP-Qdmail: version-1.2.6b The_MIT_License http://hal456.net/qdmail PHPver 5.6.21
    send-by MailFunction
2016-08-18 22:36:18
Qdmail error: Qdmail Version 1.2.6b ,PHP Version 5.6.21
Qdmail error: OS Linux ; PHP Version 5.6.21 ; Qdmail version 1.2.6b
php.ini status: mb_language = Japanese ; mb_internal_encoding = UTF-8 ; mb_detect_order = ASCII,JIS,UTF-8,EUC-JP,SJIS
Qdmail Status debug: 0, log: 0, errorlog: 3
Qdmail error: No send . Because PHP mail function replied error line -> 2190
To: oooo@gmail.com
Subject: =?iso-2022-jp?B?GyRCIU4bKEJTdGFyYnVja3MgU2VuZCBZb3VyIFRoYW5rcxskQiFPGyhC?=
    =?iso-2022-jp?B?GyRCJDQxfkpnJCIkaiQsJEgkJiQ0JDYkJCReJDckPyEjGyhC?=
From: =?iso-2022-jp?B?U3RhcmJ1Y2tzIFNlbmQgWW91ciBUaGFua3MgGyRCJS0lYxsoQg==?=
    =?iso-2022-jp?B?GyRCJXMlWiE8JXM7dkwzNkkbKEI=?= <oooo@oooo.jp>
Message-Id: <Qdmail.1.2.6b_8ed997ba694748ea03366d7f034f441bac15aced@hal456.net>
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0
X-PHP-Qdmail: version-1.2.6b The_MIT_License http://hal456.net/qdmail PHPver 5.6.21
    send-by MailFunction
2016-08-18 22:36:18
Qdmail error: Send Error line -> 2115
To: oooo@gmail.com
Subject: =?iso-2022-jp?B?GyRCIU4bKEJTdGFyYnVja3MgU2VuZCBZb3VyIFRoYW5rcxskQiFPGyhC?=
    =?iso-2022-jp?B?GyRCJDQxfkpnJCIkaiQsJEgkJiQ0JDYkJCReJDckPyEjGyhC?=
From: =?iso-2022-jp?B?U3RhcmJ1Y2tzIFNlbmQgWW91ciBUaGFua3MgGyRCJS0lYxsoQg==?=
    =?iso-2022-jp?B?GyRCJXMlWiE8JXM7dkwzNkkbKEI=?= <oooo@oooo.jp>
Message-Id: <Qdmail.1.2.6b_8ed997ba694748ea03366d7f034f441bac15aced@hal456.net>
Content-Type: text/plain; charset="iso-2022-jp"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0
X-PHP-Qdmail: version-1.2.6b The_MIT_License http://hal456.net/qdmail PHPver 5.6.21
    send-by MailFunction

また、
error_20160818_220939_sendmail.txt
error_20160818_220939_autoreply.txt

のログも書き出されます。

まったく同じファイルをロリポップで行いますと正常に動作されます。

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

@kov0530
kov0530 commented Aug 19, 2016

dounokouno様

無事実装できました。
本当に素晴らしいフォームですね。

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

@dounokouno
Owner

@segurock

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

私の方で heteml を借りてみて動作検証を行ってみましたが、特に問題無くメール送信できることを確認いたしました。

1点確認させていただきたいのですが、管理者のメールアドレスとフォーム入力者のメールアドレスは、どちらも Gmail でしょうか?

heteml とは別のレンタルサーバーでのことですが、独自ドメインのメールアドレスを利用している場合に、メール送信ができない場合があることを確認しております。

もしよろしければ外部 SMTP を利用する方法を試してみていただければ幸いです。

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

@segurock

@dounokouno

ご回答ありがとうございます。
もろもろテストをしていましたらご回答が遅くなりまして申し訳ありません。

結論としまして、時間とともに直りました。。。

まったく変更は行っていないのですが、なぜか本日になり正常に動くようになっていました。
Heteml のほうでメンテナンスのアナウンスもなかったので、なぜ??
という不安はありますが。。。

また、ご質問があった
管理者のメールアドレス は、クライアント側の独自メール
フォーム入力者のメールアドレスは、ユーザーの任意のメールアドレスですので、何が来るかは不明です。
SMTPでの利用の方法も試しましたが、こちらも昨日のエラー時には無理でした。

ただ、現在はSMTP接続有り、無しどちらも正常に作動しています。
エラーログも吐き出されなくなりました。

少しもやもや感がありますが、
ご迷惑をおかけいたしました。

今後ともありがたく利用させていただきます。

@dounokouno
Owner

heteml はよくメール送受信の障害が発生することがあるので、その影響があったのかもしれませんね...。

参考

障害情報 - レンタルサーバー「heteml(ヘテムル)」 https://heteml.jp/info/obstacle/

@segurock

@dounokouno

なるほど。。。こんなことがあったのですね。。。
これですかね~。
このままHetemlで管理するのか、他のサーバーで行うのかも含め再検討していみます。

重ね重ね
ありがとうございました。

@kov0530
kov0530 commented Aug 19, 2016

dounokouno様

もう一点だけすみません。
エラーの表示も個別出力は可能でしょうか?

@dounokouno
Owner

@kov0530

$global_errors には個別出力の機能はありません。ですので、 name 値をわかりやすい名称にしていただくことでご対応いただければと思います。

{if:$required.入力必須}
<div class="error"><em>{$required.入力必須}</em></div>
{/if:$required.入力必須}

のようなエラー出力の部分は {$required.入力必須} の部分を自由に記述いただくことで対応可能かと思います。

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

@shunshuu

@dounokouno

いつもお世話になっております。
今まで何度もこちらのTransmitMailを利用していましたが、
今更ながら気がついたことがありましたのでご質問させてください。

チェックボックスとラジオボタンについてですが、
共に1つもチェックが入っていない場合は、
その後の確認画面の際に項目ごと消えてしまうのですが、こちらはデフォルトの仕様でしょうか。

例:
名前 : 「テキストエリアフォーム」
性別 : 「男」「女」←「ラジオボタン」
電話 : 「テキストエリアフォーム」

というフォームの際に、性別のところのチェックが両方共入っていない場合は
確認画面の際に
名前 : ○○
電話 : ××

と項目ごと消えてしまっていました。
もし仕様の場合、他のテキストエリア等では項目は消えることはないので
同じように消えないようにする方法はありますでしょうか。
よろしくお願い申し上げます。

@dounokouno
Owner

@shunshuu

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

チェックボックスとラジオボタンについてですが、
共に1つもチェックが入っていない場合は、
その後の確認画面の際に項目ごと消えてしまうのですが、こちらはデフォルトの仕様でしょうか。

はい、上記は TransmitMail の仕様です。

もし仕様の場合、他のテキストエリア等では項目は消えることはないので
同じように消えないようにする方法はありますでしょうか。

個別出力機能を使っていただくか、項目を入力必須にする、などの対策が考えられます。ご参考になれば幸いです。

参考

@shunshuu

@dounokouno

早速のご返信ありがとうございます。
仕様の件、了解いたしました。

そこで個別出力をやってみたのですが、
出力用HTMLには

<tr> <th width="300">{$問1.key}&nbsp;</th> <td>{$問1.value}&nbsp;</td> </tr> <tr> <th>{$問2(1).key}&nbsp;</th> <td>{$問2(1).value}&nbsp;</td> </tr>

このように記述しまして、「問1」をラジオボックスにてチェックしなかった場合に、
確認ページでは下記の画像のようになってしまいます。
https://www.dropbox.com/s/nc1tq55z0j7t056/WS000003.jpg?dl=0

問2以降のはテキストボックスなので、未記入でも項目名は表示されますが、
ラジオボックスの場合だとこの項目名も表示されないので、
現状だと必須にして、何らかのチェックを1つでも入れないと確認ページでは
表示されないということでしょうか。

@dounokouno
Owner

@shunshuu

{$問1.key} が出力されない、ということかと思いますが、 {$問1.key}問1 としていただくことでご対応いただければと思います。

<tr>
    <th width="300">問1</th>
    <td>{$問1.value}&nbsp;</td>
</tr>
@shunshuu

@dounokouno

早速のご返信ありがとうございます。
なるほど、直に書いてしまうんですね。
了解です。ありがとうございました。

また、別件ですがこちらのよく使うパーツの都道府県別ののところが
http://qiita.com/dounokouno/items/ad8a128a0bd9fd20c3d8
岩手県が二回出てきて宮城県が消えてるので修正お願いいたします。

@dounokouno
Owner

また、別件ですがこちらのよく使うパーツの都道府県別ののところが
http://qiita.com/dounokouno/items/ad8a128a0bd9fd20c3d8
岩手県が二回出てきて宮城県が消えてるので修正お願いいたします。

ご指摘ありがとうございます。早速修正いたしました。

@sunnyrock

TransmitMailを利用させていただいております。
ver2を利用しており、大変申し分のない内容なのですが、
以下、2点の変更(カスタマイズ)が可能であれば教えていただきたいです。

・自動返信の添付について
 自動返信される側の、添付データを無しにできますでしょうか。
・フォーム「一致」(一致1 一致2)機能について
 送信後のメールに、「一致1 一致2」ではなく、
 一致1のみの表示は可能でしょうか。

以上、大変申し訳ございませんが、上記内容をご検討いただけますでしょうか。

@dounokouno
Owner

@sunnyrock

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

・自動返信の添付について
 自動返信される側の、添付データを無しにできますでしょうか。

上記件はカスタマイズいただくことで対応可能です。下記行あたりを修正いただくことになるかと思います。

https://github.com/dounokouno/TransmitMail/blob/master/lib/TransmitMail.php#L1153

・フォーム「一致」(一致1 一致2)機能について
 送信後のメールに、「一致1 一致2」ではなく、
 一致1のみの表示は可能でしょうか。

上記件に関しましては、個別出力機能をご利用いただければと思います。

参考

@sunnyrock

@dounokouno

早速のご返信ありがとうございました。
ご参考にさせていただきました。
無事、解決いたしました。

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

@yunouske0921

初めまして。
TransmitMailを愛用させていただいております。

logs/data.csvに送信ログが記載されますが、このファイルに送信日時を追加することは可能でしょうか?
// -------------------------------------------------------
// CSVの出力
// -------------------------------------------------------
if (CSV_OUTPUT) {
put_csv($_POST);
}

あたりに記載をするのかな…と思っているのですが、もしよろしければ教えていただけると幸いです。

@dounokouno
Owner

@yunouske0921

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

CSV 出力は下記行あたりで行っております。

https://github.com/dounokouno/TransmitMail/blob/master/lib/TransmitMail.php#L992

上記行あたりを下記のように修正いただくことで、送信日時が追加されるかと思います。ご参考になれば幸いです。

if ($this->config['csv_output']) {
    $this->post['送信日時'] = date('Y-m-d H:i:s');
    $this->putCsv($this->post);
}
@yunouske0921

dounokouno 様

早々にアドバイスをいただき感謝しております!
さっそく実装してみようと思います。
ありがとうございます!

@kov0530
kov0530 commented Oct 3, 2016

dounokouno 様

いつもお世話になっております。

同じ階層の別のディレクトリーにTransmitMailを2つ設置した場合
ファイル添付が1つだけエラーになります。

中のデータはほぼ同じ内容です。

@dounokouno
Owner

@kov0530

どのようなファイル構成・ディレクトリ構成になっているかご教示いただけますでしょうか?

また、エラーはどのようなメッセージが表示されていますでしょうか? ./log/ 以下にもエラーが出力されている場合は、そちらも可能な範囲でご教示いただければと思います。

@kov0530
kov0530 commented Oct 3, 2016 edited

index.html
(entry_file)
┗TransmitMailのファイル
(entry_job_file)
┗TransmitMailのファイル
(other_file)

(entry_file)こちらのディレクトリーは添付ができます!
エラーはアップロードに失敗しましたと表示されます。

./log/ 以下のエラーの見方が分かりません。
申し訳ございません。

(TransmitMailのファイルの中)
conf
css
img
js
lib
logs
temp
confirm.php
error.php
finish.php
index.php
input.php

@dounokouno
Owner

@kov0530

TransmitMail のバージョンは v1 でしょうか?

それぞれの TransmitMail でチェックモードを確認し、特に問題はない状態でしょうか?(チェックモードは v1 の場合は index.php?mode=check 、 v2 の場合は index.php?checkmode でご確認いただけます。)

@kov0530
kov0530 commented Oct 3, 2016 edited

dounokouno 様

チェックモード

システム情報

システム名 : TransmitMail
バージョン : 1.1.3
sendmail

/usr/sbin/sendmail -t -i
セーフモード

Off
HTMLテンプレート

input.php : OK
confirm.php : OK
finish.php : OK
error.php : OK
メールテンプレート

./conf/mail_body.txt : OK
./conf/mail_autoreply_body.txt : OK
パーミッション

./logs/ : NG (755)
./temp/ : OK (777)

バージョンは1ですね。

@dounokouno
Owner

@kov0530

(entry_file) と (entry_job_file) ともにチェックモードの結果は同じでしょうか? (entry_job_file) の temp ディレクトリが無い、もしくはパーミッションが正しく設定されていない、などが理由かと思ったのですが...。

また、 ご利用のバージョンは脆弱性が含まれるバージョンですので、 v1 の最終バージョンか v2 をご利用いただければと思います。

@kov0530
kov0530 commented Oct 3, 2016

dounokouno 様

申し訳ございません。
パーミッションが違いました。

パーミッション

./logs/ : NG (755)
./temp/ : NG (755)

@dounokouno
Owner

@kov0530

logs ディレクトリと temp ディレクトリのパーミッションを 777 または 755 に設定をして、再度、動作検証いただければと思います。

@kov0530
kov0530 commented Oct 3, 2016

dounokouno 様

パーミッションが原因でした。
お手数掛けました。

申し訳ございません。

@kov0530
kov0530 commented Oct 6, 2016

dounokouno 様

いつもお世話になっております。

添付ファイルをサーバーに残さない設定方法はどのようにしたらいいのでしょうか?

config.phpの設定では

// ファイルの保存期間(秒)
// 例)30分 = 1800秒
define('FILE_RETENTION_PERIOD', 0);

上記で設定していますが
残っています。

@dounokouno
Owner

@kov0530

添付ファイルは、メール送信が成功するとサーバー上から削除されます。

入力エラー画面や入力確認画面で離脱してしまった場合などはサーバー上にファイルが残ってしましますが、これは TransmitMail の仕様です。このファイルを削除するのは、カスタマイズするにしても少々大変そうです。

// ファイルの保存期間(秒)
// 例)30分 = 1800秒
define('FILE_RETENTION_PERIOD', 0);

上記の設定は添付ファイルが画像だった場合に、入力エラー画面や入力確認画面でプレビューできる時間の設定になります。

@kov0530
kov0530 commented Oct 6, 2016

dounokouno 様

配布データーのtempディレクトリーに含まれるhtaccessのファイルは必要でしょうか?
現在はファイルはサーバーに入れてありません。

@dounokouno
Owner
dounokouno commented Oct 6, 2016 edited

@kov0530

配布データーのtempディレクトリーに含まれるhtaccessのファイルは必要でしょうか?

通常は必要です。

@kazuki-yamanaka

dounokouno 様

いつもお世話になっております。

input.phpに任意のphpを記述することができません。
非表示扱いになっている様です。
何か方法はございますか?

index.php内ならphpが効くのでしょうか?

インクルードする方法を検索やここでも記載がありましたが
いまいち上手くできません。

@dounokouno
Owner

@kazuki-yamanaka

TransmitMail は tinyTemplate というテンプレートエンジンを利用しているため、テンプレートファイルに PHP を記述することができない仕様となっております。

ご指摘の通り、 index.php には PHP を書くことが可能です。

ちなみにどういった処理を書きたいと考えていらっしゃいますでしょうか?

@kazuki-yamanaka
kazuki-yamanaka commented Oct 21, 2016 edited

dounokouno 様

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

遷移前のページにてタグに{$_GET.jobselect}を設置し、
{$_GET.jobselect}で取得した文字列をフォーム内のセレクトに自動で選択させる処理です。

セレクトタグには複数の項目があり、取得した{$_GET.jobselect}を表示させたいです。

セレクト部分が連動式?ヘザーセレクトになってます。

@dounokouno
Owner

@kazuki-yamanaka

上記の内容ですと、 TransmitMail 自体のカスタマイズか、 JavaScript にてご対応いただく形になるかと思います。

どちらかというと JavaScript でご対応いただく方が簡単なように思います。

TransmitMail 自体のカスタマイズはちょっと難しそうです...。

@kazuki-yamanaka

dounokouno 様

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

jsにて対応してみます。
ありがとうございます!!

@shunshuu

以前、チェックボックスとラジオボタンの仕様についてご質問させていただきましたが、
そちらに関する事で、今度はLogファイル内のCSVファイルについてご連絡させてください。

必須でないチェックボックスとラジオボタンを確認画面や自動返信メールに記載するのは
個別出力機能と、「名前 = {$名前.value}」などにして、チェックがなくても空欄で出力することができました。
このように設定した際に、Logファイル内のCSVファイル機能も使った時は項目が詰まってしまいます。

例)「参加有無」がデフォルトでチェックのないラジオボタンとします。
「名前」「年齢」「都道府県」は入力したとして、「田中」は「参加する」にチェックを入れ、
「山田」はそのままチェックしないで送信した場合のCSVファイルの中身です。

名前 年齢 参加有無 都道府県
田中 18 参加する 東京都
山田 20 千葉県

このようにチェックを入れてない、チェックボックスやラジオボタンが詰まって書き込まれてしまいます。
確認画面や自動返信メールは上記の方法で表示させることができましたが、
こちらはチェックがない場合はどうしても詰まってしまいます。
何もチェックがない場合はどうしようもないでしょうか。

@dounokouno
Owner

@shunshuu

上記は TransmitMail (とHTML)の仕様で、いい解決方法が思い浮かばないんですよね...。

@LocalVideoShop

dounokouno 様

素敵なフォームでいつも利用させて頂いております。
ありがとうございます!

1点質問させて頂きたいのですが、
入力必須ではなく、
2つの入力欄のどちらか一方が入力されていればOK(a || b)という条件を設定することは可能でしょうか?

ex)電話番号かe-,mailが入力されていれば送信可能、どちらも入力されていなければエラーになる。

お忙しいところ恐縮ですがご教示いただければ幸いです。

それでは宜しくお願い致します。

@nkoichiro

@dounokouno

お世話になっております。
先日より質問をしておりますnkoichiroと申します。
またしても質問で恐縮です。

#2 (comment)
の記述を基に同じ手順でWordPressに組み込もうとしたところ
WordPressのヘッダー・フッターのみが表示され、Transmitmailのフォームが表示されませんでした。
該当箇所には何も表示されていません。

checkmodeも動作しておりませんでしたが、
仕様変更になり以前の手順では導入できなくなったのでしょうか?

サーバはhetemlを利用し、Transmitmailのバージョンは2.0.8です。

@dounokouno
Owner

@LocalVideoShop

お返事が遅くなってしまい申し訳ありません。

入力必須ではなく、
2つの入力欄のどちらか一方が入力されていればOK(a || b)という条件を設定することは可能でしょうか?

ex)電話番号かe-,mailが入力されていれば送信可能、どちらも入力されていなければエラーになる。

TransmitMail には上記機能はありませんので、 TransmitMail をカスタマイズしていただくか、 JavaScript で実装いただく形になるかと思います。

上記仕様を TransmitMail のカスタマイズで実装するのは少々難しいように思いますので、 JavaScript で実装いただくのが現実的かなと思います。

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

@dounokouno
Owner

@nkoichiro

仮に form というスラッグの固定ページだったとしまして、下記なファイル構成とコードで動作するかと思います。

ファイル構成

  • wp-content/themes/theme/
    • page-form.php
    • form/
      • config/
      • lib/
      • logs/
      • tmp/
      • index.php
      • confirm.html
      • error.html
      • finish.html
      • input.html

コード

page-form.php

<?php
get_header();

require_once dirname(__FILE__) . '/form/lib/TransmitMail.php';
$tm = new TransmitMail(dirname(__FILE__) . '/form/config/config.yml');
$tm->run();

get_footer();

config/config.yml

config:
    to_email: info@example.com
    to_subject: [株式会社テスト]お問い合わせ
    auto_reply_subject: [株式会社テスト]お問い合わせありがとうございます
    auto_reply_name: 株式会社テスト
    session: false
    tpl_input: wp-content/themes/theme/form/input.html
    tpl_confirm: wp-content/themes/theme/form/confirm.html
    tpl_finish: wp-content/themes/theme/form/finish.html
    tpl_error: wp-content/themes/theme/form/error.html
    mail_body: wp-content/themes/theme/form/config/mail_body.txt
    mail_auto_reply_body: wp-content/themes/theme/form/config/mail_auto_reply_body.txt
    log_dir: wp-content/themes/theme/form/log/
    tmp_dir: wp-content/themes/theme/form/tmp/

input.html と confirm.html

form 要素の action の値を ./ に修正します。

修正前

<form method="post" action="index.php">

修正後

<form method="post" action="./">

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

@nkoichiro

@dounokouno

早速のご回答ありがとうございます。
こちらで試してみます。

@shunshuu

@dounokouno

一先ず、色々試してみまして、スペースをvalue値にしたinput を置いて、それをdisplay:none; で隠して
デフォルトのチェック値に指定して設置しました。
スペースが送られてしまいますが、見た目上は何もなしでCSVでは置換でまとめてスペースを消すなりして
対応しようと思います。

今後ver3を出す事がありましたらこちらの改良をお願いいたします。ありがとうございました。

@LocalVideoShop

@dounokouno

ご回答ありがとうございました!
JavaScriptの実装で試してみます。

引き続き宜しくお願い致します。

@halumaron

tagawa様

お世話になっております。

以前も質問にお答えいただき、大変助かりました。ありがとうございます。

もう一つ別で教えていただきたいことがあります。
「ご予約希望日」などで年月日をドロップダウンで選択し、
必須項目にすることは可能でしょうか。

よろしければ教えてください。

halumaron

2016年3月23日 15:58 tagawa notifications@github.com:

@halumaron https://github.com/halumaron

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

添付ファイルは、設定ファイル内で「添付を許可する拡張子」を設定する必要がありますが、そちらは設定いただいていますでしょうか?設定ファイルの「添付を許可する拡張子」を設定する箇所は
Wiki の該当ページ(下記 URL )をご確認ください。

https://github.com/dounokouno/TransmitMail/wiki/設定ファイルの記述方法(
v2)#ファイル添付を許可する拡張子


You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
#2 (comment)

@dounokouno
Owner

@halumaron

select の入力必須は <input type="text"> の場合と同じです。おそらく「年」「月」「日」と select が分かれているかと思いますので、それぞれに対して入力必須オプションを記述します。

https://github.com/dounokouno/TransmitMail/wiki/テンプレートの記述方法#入力必須

@halumaron

tagawa様

お世話になっております。

それぞれに対して入力必須オプションを記述することで、対応できました。
いつも単純なことですみません(>_<)

また、迅速なご対応で助かりました。
ありがとうございました。

2016年11月7日 16:54 tagawa notifications@github.com:

@halumaron https://github.com/halumaron

select の入力必須は の場合と同じです。おそらく「年」「月」「日」と select
が分かれているかと思いますので、それぞれに対して入力必須オプションを記述します。

https://github.com/dounokouno/TransmitMail/wiki/テンプレートの記述方法#入力必須


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#2 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/ARMC7kFatQjzhYslHyEuMTgOCvCn2U6Oks5q7tlDgaJpZM1jeA==
.

@yunouske0921

dounokouno様

いつもTransmitMailをいつも利用させていただいております。
問い合わせフォームで利用したいと思っているのですが、いわゆる「問い合わせ番号」を付与したいと思っております。シリアルは、201611161626-123456789012と、「送信日時-送信者のIP(ドット抜き)」にする予定です。
(1) ユーザー宛(mail_auto_reply_body.txt)および管理者宛(mail_body.txt)双方のメール本文に問い合わせ番号を載せたい
(2) 出力ログ(data.csv)にも問い合わせ番号を載せたい
としたとき、どこにどのようなスクリプトを書けばいいでしょう…?
よろしくお願い申し上げます。

@dounokouno
Owner

@yunouske0921

風邪をひいてしまったため、お返事が遅くなりますm(_ _)m

@yunouske0921

@dounokouno
お大事になさってください!
ご返信ありがとうございます。

@dounokouno
Owner

@yunouske0921

カスタマイズ方法はいくつか考えられますが、一例としてご紹介しますね。(さしあたり lib/TransmitMail.php を直接編集する形でカスタマイズ方法をご紹介します。 )

1. lib/TransmitMail.php の 179 行目に下記行を追加

// 問い合わせ番号
private $contact_number = '';

https://github.com/dounokouno/TransmitMail/blob/master/lib/TransmitMail.php#L179

2. lib/TransmitMail.php の 930 行目に下記行を追加

$this->contact_number = date('Ymd') . '-' . str_replace('.', '', $this->server['REMOTE_ADDR']);
$this->tpl->set('問い合わせ番号', $this->contact_number);

https://github.com/dounokouno/TransmitMail/blob/master/lib/TransmitMail.php#L930

3. 管理者宛メールと自動返信メールのテンプレートの任意の位置に {$問い合わせ番号}を追加

4. lib/TransmitMail.php の 994 に下記行を追加

$this->post['問い合わせ番号'] = $this->contact_number;

https://github.com/dounokouno/TransmitMail/blob/master/lib/TransmitMail.php#L994


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

@yunouske0921

@dounokouno

お書きいただいた修正を施したところ見事、イメージしたとおりになりました!
何から何までありがとうございます!!

@yokoiwahiroki

お世話になっています。ただいま自社サイトのメールフォームにTransmitMailを利用させていただいているのですが、内容に特殊文字 (ハートマークなど) があった場合に送られてきたメールでは「?」と表示されてしまいます。

こちら何かしら解決方法はございますでしょうか?
(TransmitMail.phpの1105行目「$body = $this->hd($body);」の直後に「$body = mb_convert_encoding($body,'ISO-2022-JP-ms');」などと入れてみましたが、期待通りには動きませんでした)

@dounokouno
Owner

@yokoiwahiroki

$this->mail->send() が実行される前( lib/TransmitMail.php の1182行目)に下記行を追加いただくと、特殊文字が送信できることを確認いたしました。

$this->mail->charset('UTF-8', 'base64');

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

参考

特殊文字を送りたい(丸数字、はしご高など) - Qdmail - PHP::Mail Library , Quick and Detailed for Multibyte
http://hal456.net/qdmail/irregular_char

@yokoiwahiroki

@dounokouno

早速のお返事痛み入ります。ご助言いただいた通りにしてみたところ、無事に特殊文字もメールに表示されるようになりました。

このたびは本当にありがとうございました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment