TransmitMail icon indicating copy to clipboard operation
TransmitMail copied to clipboard

質問: 1. idとnameは英語にしても動きますか? 2. 確認画面なしにできますか? 3. htmlをphpに変更して良いですか?

Open taka224 opened this issue 3 years ago • 50 comments

こんにちは TransMitMailについて3点教えてください。

1 idとnameは英語にしても動きますか? 2 確認画面なしにできますか? 3 htmlをphpに変更して良いですか?

お手数ですがよろしくお願いします。

taka224 avatar Aug 31 '21 09:08 taka224

Twitter の DM でも同様のご質問をいただいておりましたので、こちらでもお返事させていただきますね。

1 idとnameは英語にしても動きますか?

はい、問題ないと思います。

2 確認画面なしにできますか?

下記サイトが参考になるかと思います。

Transmitmail ver2で確認画面を飛ばしたいとき | 株式会社デザインスープ

3 htmlをphpに変更して良いですか?

テンプレートファイルの html を、ということでしたら、拡張子は何に変更していただいても問題なく動作するかと思います。ただ、 php に変更しても php は動作しないかと思います。

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

dounokouno avatar Aug 31 '21 09:08 dounokouno

ありがとうございます。 phpを動かすのはどうにもできないでしょうか?

taka224 avatar Aug 31 '21 12:08 taka224

phpを動かすのはどうにもできないでしょうか?

どうにもできなくはないと思います。利用している tinyTemplate というテンプレートエンジンをカスタマイズすれば利用できるようになると思います。ただ、私が開発したライブラリではないので、カスタマイズが難しく、実現には至っていません。。

もしくは、他の php を利用できるテンプレートエンジンを利用するように TransmitMail をカスタマイズするとか、 php ファイル自体を参照するように TransmitMail をカスタマイズするなど、いろいろと方法は考えられると思います。

ただ、 TransmitMail 標準の機能としては、現時点ではテンプレートファイル内で php を動作させることをサポートしていない、といった状況です。

dounokouno avatar Sep 01 '21 00:09 dounokouno

ありがとうございます。 また何かあれば教えてください。

taka224 avatar Sep 01 '21 03:09 taka224

index.phpにインクルードしたら読み込み出来たのですが、バリデーションが機能しません。

require_once 'lib/TransmitMail.php';
$tm = new TransmitMail();
$tm->init('config/config.yml');
$tm->run();
require_once '../header.php';
require_once 'input.php';
require_once '../footer.php';

今はこういう感じです。 http://renewal.pickphat.com/contact/

どこが違うのでしょうか?

お手数ですがよろしくお願いします。

taka224 avatar Sep 01 '21 05:09 taka224

require_once '../header.php'; require_once 'input.php'; require_once '../footer.php';

上記の部分はあくまで php を requireしただけなので、 require した部分は TransmitMail で利用しているテンプレートエンジン( tinyTemplate )とは別の読み込み方法なので、 tinyTemplate のバリデーション機能は動作しません。 TransmitMail でメソッドとして定義しているバリデーション機能を直接使えば動作するかもしれませんが、私は未確認です。

dounokouno avatar Sep 01 '21 11:09 dounokouno

できそうな気がするのですが、バリデーションが機能しません。 あと、送信ボタン押すと画面が変わるのですが、finish.htmlの内容が出ません。

taka224 avatar Sep 01 '21 14:09 taka224

どのようなコードを書かれていて、どのような動作を想定されているか、ご教示いただけるとありがたいですmm また、 PHP と TransmitMail のバージョンも教えていただけるとありがたいです。

dounokouno avatar Sep 01 '21 16:09 dounokouno

ありがとうございます。

phpバージョン:7.3 TransmitMail:2.6.1

index.php

require_once '../header.php';
require_once 'lib/TransmitMail.php';
$tm = new TransmitMail();
$tm->init('config/config.yml');
$tm->run();
require_once '../footer.php';

input.html

        <form action="./" method="post">
            <input type="hidden" name="csrf_token" value="{$csrf_token}">
            <dl>
                <dt><label for="msg">お問い合わせ詳細&nbsp;<span>必須</span></label></dt>
                <dd><textarea name="msg" id="msg" required aria-required="true" value="{$お問い合わせ詳細}"></textarea>
                    <input type="hidden" name="required[]" value="お問い合わせ詳細">
                    {if:$required.お問い合わせ詳細}
                    <p>{$required.お問い合わせ詳細}</p>
                    {/if:$required.お問い合わせ詳細}
                </dd>
            </dl>
            <dl>
                <dt><label for="name">お名前・会社名&nbsp;<span>必須</span></label></dt>
                <dd><input type="text" name="name" id="name" required aria-required="true" value="{$お名前・会社名}"></dd>
                <input type="hidden" name="required[]" value="お名前・会社名">
                {if:$required.お名前・会社名}
                <p>{$required.お名前・会社名}</p>
                {/if:$required.お名前・会社名}
            </dl>
            <dl>
                <dt><label for=" email">返信先メールアドレス&nbsp;<span>必須</span></label></dt>
                <dd><input type="email" name="email" id="email" required aria-required="true" value="{$返信先メールアドレス}"></dd>
                <input type="hidden" name="required[]" value="返信先メールアドレス">
                {if:$required.返信先メールアドレス}
                <p>{$required.返信先メールアドレス}</p>
                {/if:$required.返信先メールアドレス}
            </dl>
        </form>
        <form method="post" action="./">
            {$hiddens}
            <input type="hidden" name="page_name" value="finish">
            <button type="submit" name="submit" value="送信する">送信する</button>
        </form>

やりたいことは、送信ボタン押すとエラーがあればエラーメッセージが表示され、エラーがなければ送信完了ページに推移したいです。

taka224 avatar Sep 01 '21 17:09 taka224

なぜか突然500エラーが出ました。

taka224 avatar Sep 01 '21 17:09 taka224

なぜか突然500エラーが出ました。

500エラーの内容が、画面に出力されていないでしょうか?出力されていない場合は、 error の設定を変更して、画面に出力するようにして、エラー内容を本 issue のコメントに貼り付けていただけるとありがたいです。

もしくは、 log ディレクトリ内にエラー内容が出力されていないでしょうか?

dounokouno avatar Sep 02 '21 03:09 dounokouno

image こういう状態です。

error の設定を変更しても何も出ないですし、ログも何もないです。

taka224 avatar Sep 02 '21 05:09 taka224

どこかのレンタルサーバーを利用されている場合は、レンタルサーバーの機能として、エラーログがどこかでみれたりしないでしょうか?

dounokouno avatar Sep 02 '21 05:09 dounokouno

ロリポップなんですが、エラーログはないようです。

taka224 avatar Sep 02 '21 08:09 taka224

何かTransmitMailは関係なかったようです。 なぜかcontactというフォルダだけアクセスできないです。

taka224 avatar Sep 02 '21 08:09 taka224

503エラーは原因不明ですが直りました!

TransmitMailの件は、やはりバリデーションが機能しません。

taka224 avatar Sep 02 '21 14:09 taka224

送信ボタンで完了ページは出るようになりました。 あとはバリデーションとメール送信が動きません。

taka224 avatar Sep 02 '21 14:09 taka224

TransmitMailの件は、やはりバリデーションが機能しません。

あとはバリデーションとメール送信が動きません。

動作させようとしているコードは下記のものから変更はないでしょうか?

https://github.com/dounokouno/TransmitMail/issues/75#issuecomment-910484086

dounokouno avatar Sep 03 '21 03:09 dounokouno

はい 基本的には変わらないです。 本当はidとnameを英語にします。

taka224 avatar Sep 03 '21 03:09 taka224

テンプレートファイルを html から php に変更したい、といった話がありましたが、それはやめて入力画面のテンプレートファイルは「input.html」というファイル名を利用している、という認識であっていますか?

また、

送信ボタンで完了ページは出るようになりました。 あとはバリデーションとメール送信が動きません。

とのことですが、 log ディレクトリに何かログファイルが出力されていないでしょうか?

dounokouno avatar Sep 03 '21 03:09 dounokouno

いやhtmlでもphpでも良いです。 header.phpとfooter.phpが組み込んで、バリデーションとメール機能が動けば何でも良いです。

ログにエラーが出てました。

Cannot modify header information - headers already sent by (output started at /home/users/2/lolipop.jp-7084e0fe7e215321/web/renewal/header.php:19) in /home/users/2/lolipop.jp-7084e0fe7e215321/web/renewal/contact/lib/TransmitMail.php on line 1025

taka224 avatar Sep 03 '21 04:09 taka224

いやhtmlでもphpでも良いです。 header.phpとfooter.phpが組み込んで、バリデーションとメール機能が動けば何でも良いです。

そうなんでね。

ちなみに、

なぜかcontactというフォルダだけアクセスできないです。

というコメントをされていますが、 TransmitMail を設置されようとしているサイトの、簡単で構いませんのでディレクトリ構成、ファイル構成をコメントいただけると助かりますmm

dounokouno avatar Sep 03 '21 04:09 dounokouno

いや原因不明ですがcontactフォルダにアクセスできるようになりました。 伝い忘れてすみません。

taka224 avatar Sep 03 '21 05:09 taka224

いや原因不明ですがcontactフォルダにアクセスできるようになりました。

はい、それはコメント( https://github.com/dounokouno/TransmitMail/issues/75#issuecomment-911732313 )で伺いました。

今は TransmitMail を設置されようとしているディレクトリ構成とファイル構成を教えていただけるとありがたいです。何かのヒントになるかもしれませんので。

dounokouno avatar Sep 03 '21 05:09 dounokouno

https://ryoheiobayashi.com/archives/721

このページに

ob_start();
require_once 'lib/TransmitMail.php';
$tm = new TransmitMail();
$tm->init('./config/config.yml');
include '../header.php';
$tm->run();
include '../footer.php';

と書けば良いとありますが動きません。

taka224 avatar Sep 03 '21 05:09 taka224

えっと、 TransmitMail を設置されようとしているディレクトリ構成やファイル構成を教えていただきたいのですが、何かコメントいただくことができない理由があったりする状況でしょうか?(ディレクトリ構成やファイル構成は機密にしておかなければならない、など)

下記のコメントを拝見しますと、 ↑ ( https://github.com/dounokouno/TransmitMail/issues/75#issuecomment-912257323 )とは少し書き方が違うようですが、同じように書いても動作しない状況でしょうか?

https://github.com/dounokouno/TransmitMail/issues/75#issuecomment-910484086

dounokouno avatar Sep 03 '21 05:09 dounokouno

image フォルダ構成

新しいフォルダは無視してください。

taka224 avatar Sep 03 '21 05:09 taka224

上記のフォルダは、 index.php にアクセスすると http://renewal.pickphat.com/index.php にアクセスすることになる、という認識であっていますか?

dounokouno avatar Sep 03 '21 06:09 dounokouno

はい そうです。

taka224 avatar Sep 03 '21 06:09 taka224

ob_start();を追加したら、エラーログはなくなりましたが、動きは同じです。

taka224 avatar Sep 03 '21 07:09 taka224