【node.js】【Express】を利用したサイトに、php.mailファイルを使ったお問い合わせフォームを設置したい。

実現したいこと

PHP工房様が配布されているフリーのPHPフォームを、
node.jsおよびExpressを利用したサイトで、問い合わせフォームとして利用できるようにしたいです。

一人でなかなか作りきることができず、アドバイスやご教授いただけますと大変幸いです。

前提

①html/css/javascriptのみの静的なポートフォリオサイトを作成し、
②そのサイトにNode.jsとExpressを利用してToDoリストを実装しました。
③ ①の状態では、問題なくPHP工房様のメールフォームが使えたのですが、
④ ②を実装したあと、問い合わせフォームから送信を押下すると、
「Cannot POST / mail.php」がブラウザに表示されるようになりました。
また、コンソールには「404(not found)」が表示されておりました。

発生している問題・エラーメッセージ

・ブラウザ上 Cannot POST / mail.php ・コンソール上 404(not found) mail.php

該当のソースコード

folder構成

1※今回関係すると思われるものを右の方に書いています↓ 2 3>controllers 4>db 5>node_modules 6             >public 7                 →index.html 8                 →mail.php 9>routes 10.dockerignore 11.env 12.gitignore 13             app.js 14Dockerfile 15fly.toml 16package-lock.json 17package.json 18README.md

mail.php

1PHP工房様のHPの記載にある通りの設定をしています(以下) 2・メッセージを受け取るメールアドレスを設定すること、ホームページのURL 3・index.htmlのinput(textarea含)タグのnameにあたる部分をindex.htmlとmail.phpでそろえること 4 5例)★はPHP工房様のHPより 6 7★使うファイルはたった1つだけです。(mail.phpのみ)なので設置・管理が容易です 8 ※すべての設定はmail.phpで行います。 9  ⇒とのことなので、ほかのファイルには何の設定もしていないです。 10  もしかしてルーティングが必要だったりするのでしょうか…? 11  調べている中で「app.post()」を使うというのを見たのですが、どう書けばよいのかわからず、書けておりません。。 12 13 14★フォームページ側のformタグのaction属性の値をmail.phpへの相対パス(絶対パスも可)を記述すればOKです。 15 method属性も必須です。必ずpostを指定してください。 16  ⇒設定しています。<form class="contact-form" action="./mail.php" method="post"> 17 18 19★mail.phpとフォームページをサーバーにアップします。 20  ⇒アップしています。

index.html

1<form class="contact-form" action="./mail.php" method="post"> 2  <label for="name">お名前<span> ※必須</span></label> 3  <input type="text" name="お名前" class="validate required" id="name"> 4  <label for="email">メールアドレス<span> ※必須</span></label> 5  <input type="email" value="" name="メールアドレス" class="validate required email" id="email"> 6   <label for="message">メッセージ<span> ※必須</span></label> 7  <textarea id="message" name="メッセージ" rows="10" cols="60"class="validate required"></textarea> 8 <p><input type="submit" value="送信"></p> 9</form>

app.js

1こちらはTodoアプリのために作成したファイルになります。 2不要かもしれませんが、記載させていただきます。 3※nodemailerについては、PHP工房様のフォームが使用できなかったため、nodemailerを利用してフォームをつくったものです。PHP工房様のフォームが利用できれば記載を削除する予定です。 4 5const express = require("express"); 6const app = express(); 7const taskRoute = require("./routes/tasks"); 8const connectDB = require("./db/connect"); 9const nodemailer = require("nodemailer"); 10require("dotenv").config(); 11app.use(express.json()); 12app.use(express.static("./public")); 13 14 15const PORT = 5000; 16 17//ルーティング設計 18app.use("/api/v1/tasks", taskRoute); 19 20//データベースと接続 21const start = async () => { 22 try { 23 await connectDB(process.env.MONGO_FLY_IO_URL || process.env.MONGO_URL); 24 app.listen(process.env.PORT || PORT, console.log("サーバが起動しました")); 25 } catch (err) { 26 console.log(err); 27 } 28}; 29 30start();

試したこと

404でページ遷移ができていないのかと考えたため、
フォルダ構成の中でphp.mailの場所を変えるなどしてみましたが、変化はありませんでした。。

セキュリティ面を考え、フリーで提供されているフォームを使えばよろしいというご意見もあるかと存じますが、
未熟ながらプログラミングに触れ学びたいと考えております。
お力添えいただけますと、大変助かります。
何卒よろしくお願い申し上げます。

コメントを投稿

0 コメント