mieee1103
@mieee1103

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

メールフォームのphpがうまく動かない

phpの知識がないのですが、メールフォームを設定する必要があり、
手順に沿ってやってみたのですが上手くいかず、お知恵を拝借したいです。

■使用ファイル
PHP工房様のHP多機能メールフォーム フリー(無料)版
https://www.php-factory.net/mail/01.php

■変更した点
mail.phpのメールアドレスを自分のアドレスに変更
スクリーンショット 2023-08-19 22.43.03.png

■アップ環境
①スターサーバーフリー
②Xfree

■結果
結論、どちらも上手くいきませんでした。

①スターサーバーフリー
・画面遷移:
 送信内容確認画面、送信完了画面共に表示に問題なく遷移しました。

・メール送受信:
 問い合わせした人に届くお礼メールも、
 管理者に届く「問い合わせがありました」も届きません。
 (送信から1時間経過後も届かない、迷惑メールフォルダにも入っていない)

②Xfree
・画面遷移
 送信内容確認がめんに進むと、文字化けが起こり、先に進めません。
スクリーンショット 2023-08-19 22.15.55.png


自分で調べて対応したこと、確認済みのこと

・文字コードの設定
HTML、php共に文字コードはUTF-8に設定済みでした。
 HTML: meta charset="UTF-8"
 php:?php header("Content-Type:text/html;charset=utf-8"); ?

・php.ini設定
Xfreeの管理画面で以下の通り設定済みです。
スクリーンショット 2023-08-19 22.16.13.png

調べてわかる範囲のことは対応したのですが、上手くいかず、
解消方法を教えていただきたいです。

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

0

2Answer

当該の提供ソースを見たところPHPのmail関数でメール送信をしようとしているので、おそらく、サーバーにsendmail(かメールサーバをsendmailに見せかける仕掛け)がないのだと思います。

1Like

Comments

  1. @mieee1103

    Questioner

    ご回答いただき、ありがとうございます。
    返信が遅くなりまして申し訳ありません。

    Xfreeではphpのメール関数に対応していないと言うことでしょうか?
    サーバーを契約する際に、対応しているかどうかどこを確認すれば分かりますでしょうか。

  2. Xfreeのマニュアルに記載があります。
    https://www.xfree.ne.jp/manual/man_mail_spec.php
    Postfixですね。sendmailと互換性は高いですが、どうでしょうか(サーバーの実装がわかりません)。
    mail関数はsendmailにデータを渡せたかどうかを戻すので、その値をvar_dumpしたものをechoで表示させれば原因の切り分けはできます。戻り値がtrueならPHPはメール送信はしていて、その先はpostfixの処理がうまくできているかどうかにかかってきます。falseならPHPはメール送信をできていません。
    提供されているソースの240~247行あたりでmail関数を使っているので改造するのはそのあたりですね。
    https://www.php.net/manual/ja/function.mail.php

    他の手立てとしては、XfreeサーバでPHPからメール送信した人がブログか何か残していないか検索してみるのもよいかもしれません。

  3. @mieee1103

    Questioner

    作り物のphpだけでなく、自分での改造が必要ということですね・・・。
    phpの知識があまり無いので、教えていただいたことをもとに、勉強しつつチャレンジしてみます。

    参考サイトなども貼っていただき、ありがとうございました。

どちらのサービスもプランの記載が無いのですが、PHPの使える使えないが存在しています。この点よく確認なさるように。

スターサーバーフリーでは「フリーPHP+MySQL」プランであると推測されますが、

 問い合わせした人に届くお礼メールも、
 管理者に届く「問い合わせがありました」も届きません。

$toの値が間違っているか、$remail = 0;のままにしている。

或いは1日/50通制限に達しているか。

送信内容確認がめんに進むと、文字化けが起こり、先に進めません。

単に拡張子.phpがテキストファイル扱いにされてるので、「HTMLサーバー機能」プランでは無いのか?

0Like

Comments

  1. @mieee1103

    Questioner

    ご回答いただき、ありがとうございます。
    返信が遅くなりまして申し訳ありません。

    スターサーバーフリーでは「フリーPHP+MySQL」プランであると推測されますが、

    失礼しました。ご認識の通り、フリーPHP+MySQLプランでの契約です。

    $toの値が間違っているか、$remail = 0;のままにしている。
    或いは1日/50通制限に達しているか。

    $toの設定に誤りはなく, $remail=1 になっていました。
    また上限通数にも達していません。

    単に拡張子.phpがテキストファイル扱いにされてるので、「HTMLサーバー機能」プランでは無いのか?

    こちらも添付のWordpressプランで申し込んでおり、
    管理画面もその通りになっていたので、phpは対応してるプランを契約していました。
    スクリーンショット 2023-08-22 18.56.21.png

    PHP が読み込まれていないと言うことでしょうか。。?

  2. 推測ですがスターサーバーフリーの「フリーPHP+MySQL」のほうはPHPの動作と送信に問題は無いと思われます。エラーログがどうなってるか分からないので確証ありませんが、PHPの知識が無ければmail関数云々以前にデバッグすら難しいでしょうし当方もそれ以上の対応はしません。

    あとメールアドレスに関する情報が無いのですが、フリーのメールサービスをつかっているのでしたらほぼ届かないものだと思って下さい(スターサーバーフリー、xfree共に)。発信元を偽って送信しているわけですからスパム扱いされるまえに削除となります。これは配布元ページにも書かれてます。

    管理者のメールアドレスが2つ以上設定されている場合で送信先がGmailの場合にGmail側へのメールが届かない(迷惑メールにもなっていない)ことを確認しています。そのため管理者のメールアドレスはできる限り設置サイトのドメインと同じものにして、1つのみ設定して下さい。

    Gmailに焦点を当てる内容ですが、フリーのメールサービスなら何処でもあり得ると思って下さい。

    独自ドメインを使っているのであればドメインにSPF及びDKIMの設定は必要です。xfreeのWordPressプランでは独自ドメインを扱えないので無理です。

    PHP が読み込まれていないと言うことでしょうか。。?

  3. @mieee1103

    Questioner

    配布元のサイトの記載では、
    設置サイトとのドメイン一致はできる限りとなっていたので、
    フリーのアドレスでも問題ないと思っていました・・・。

    ご記載いただいている内容から察するに、
    phpのメールフォームを設置する際は、
    フリーのアドレス(Gmailやヤフーなど)を発信元とすることはできないという理解で間違い無いでしょうか。

  4. フリーのアドレス(Gmailやヤフーなど)を発信元とすることはできないという理解で間違い無いでしょうか。

    上記にも書きましたがフリーのメールサービスの発信元を偽ってるのでSPF, DKIM及びDMARCを照会された時点でなりすまし判定され正常に届くことは無いでしょう。

    素直に問い合わせフォームサービスを検討した方が良いでしょう。

  5. @mieee1103

    Questioner

    理解しました。
    ご丁寧にご教示くださりありがとうございました。

Your answer might help someone💌