埋め込まれた連絡フォームを使用して、ユーザー フィードバックを電子メールで送信しようとしています。mailto を使用しない場合:
html/browser-javascriptを含むnginxによって提供されるほとんど静的なWebページがあります。
戦略はこれに非常に似ています。
http://www.phpeasystep.com/phptu/8.html
私の静的ページにはフォームセクションがあります:
<form action="sendmail.js" method="post" id="contactForm">
<div class="sep">
<label for="name" class="txt">Name:</label>
<input type="text" name="name" value="" id="name">
</div>
<div class="sep">
<label for="email" class="txt">Email:</label>
<input type="text" name="email" value="" id="email">
</div>
<div class="sep">
<label for="tele" class="txt">Telephone:</label>
<input type="text" name="tele" value="" id="tele">
</div>
<div class="sep special">
<label for="last" class="txt">Don't fill this in:</label>
<input type="text" name="last" value="" id="last">
</div>
<div class="sep">
<label for="message" class="txt">Message:</label>
<textarea rows="5" name="message" id="message"></textarea>
</div>
<div class="buttonAlign submitbutton">
<button type="submit" class="button mediumButton" id="submit">Send Message</button>
</div>
</form>
フォーム要素をサーバー側の node.js スクリプトである sendmail.js に渡し、そのスクリプトでフォーム要素を含むメールを作成してから発送します。
私はnode.jsとnginxにかなり慣れていないので、何が欠けているのかわかりません。しかし、機能していません。スクリプトはまったく実行されていません。
nginx の default.conf ファイルには特別なことは何も追加していません。node.js スクリプトはベース ディレクトリにあり、名前を変更すると、ファイルが見つからないというエラーが発生します。だから、私はnginxがそれを探していることを知っています。スクリプト ファイルの最初の行には、node.js の she-bang と、実行可能ファイルへの chmod が含まれています。
どんな助けにも感謝します。
access.log に次のメッセージが表示されます
==> access.log <==
"POST /sendmail.js HTTP/1.1" 405 574 "https://xyzzy.net/index.html" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)" "-"
Web ページに応答が表示されることを期待していません。sendmail.js スクリプトを実行して、フォーム データを含むメールを送信したいだけです。/tmp に「ブレッドクラム」ファイルを作成/書き込みしようとする「ダミー」スクリプトを次に示します。
#!/usr/local/bin/node
var fs = require('fs');
fs.writeFile("/tmp/test", "Hey there!", function(err) {
if(err) {
console.log(err);
} else {
console.log("The file was saved!");
}
});