javascript - 调用 PHP 通过 Javascript 发送电子邮件
问题描述
我有一个 HTML 网页,并且正在尝试使用 Javascript 调用单独的 PHP 页面来发送电子邮件。我知道在大多数情况下这是一个不必要的步骤,但我使用的 Java 框架不支持 PHP 文件,所以我需要解决这个问题。我正在使用 JQuery 访问 PHP,但是每当我尝试发送电子邮件时,我都会收到来自 PHP 的错误提示[object Object] error Not found
。有什么建议或想法吗?
这是我的 HTML:
<form name="feedback-form" id="feedback-form" class="w3-center">
<h4 class="w3-center" style="max-width:1000px;align-content:center;"><label>Your email address</label></h4>
<input id="email" style="max-width:300px;margin-left:auto;margin-right:auto" class="w3-center w3-input w3-border" name="email" placeholder="name@website.com" required>
<h4 class="w3-center" style="max-width:1000px;"><label>Feedback</label></h4>
<textArea id="message" cols="10" rows="5" class="w3-center w3-input w3-border" name="message"></textArea>
<h4 class="w3-center" style="max-width:1000px;" id="ifSuccess"></h4>
<h4><button style="max-width:250px;margin-left:auto;margin-right:auto" class="w3-button w3-black w3-round w3-hover-light-grey w3-center" onclick="sendMail()" type ="button" name="submit" id="submit">Enter</button></h4>
</form>
这是我的 Javascript 函数 sendMail():
<script>
function sendMail() {
$.ajax({
type: "POST",
url: "email.php",
data: {email: $("#email").val(),
message: $("#message").val()},
success: function () {$("#ifSuccess").html("Message sent successfully!");},
error: function (req, status, error) {alert(req + " " + status + " " + error);}
});
};
</script>
而且 - 在一个名为 email.php 的单独文件中,这是我的 PHP:
<?php
$email = $_POST['email'];
$text = $_POST['message'];
$to = "recipient@gmail.com";
$from = $email;
$subject = "Form submission";
$subject2 = "Form submission copy";
$message = "You have received the following feedback email:" . "\n\n" . $text;
$message2 = "Here is a copy of your message " . "\n\n" . $text;
$headers = "From:" . $from;
$headers2 = "From:" . $to;
mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2);
?>
先感谢您!
解决方案
我猜这是因为 Ajax 不能正常传递值。并且标签名称也是错误的。
所以试试这个。
HTML
<form id="feedback-form" class="w3-center" name="feedback-form">
<h4 class="w3-center" style="max-width: 1000px; align-content: center;">
<label>Your email address</label>
</h4>
<input id="email" class="w3-center w3-input w3-border" name="email" placeholder="name@website.com" style="max-width: 300px; margin-left: auto; margin-right: auto;" required/>
<h4 class="w3-center" style="max-width: 1000px; align-content: center;">
<label>Feedback</label>
</h4>
<textarea id="message" class="w3-center w3-input w3-border" name="message" cols="10" rows="5"></textarea>
<h4 id="ifSuccess" class="w3-center" style="max-width: 1000px; align-content: center;"></h4>
<h4>
<button id="submit" class="w3-button w3-black w3-round w3-hover-light-grey w3-center" onclick="sendMail()" type="button" name="submit" style="max-width: 250px; margin-left: auto; margin-right: auto;">
Enter
</button>
</h4>
</form>
JavaScript
<script>
function sendMail() {
$.ajax({
type: "POST",
url: "./email.php",
data: $("#feedback-form").serialize(),
success: function () {
$("#ifSuccess").html("Message sent successfully!");
},
error: function (req, status, error) {
alert(req + " " + status + " " + error);
}
});
}
</script>
我假设您使用的 PHP 代码与您最初编写的完全一样。
推荐阅读
- python - 使用 PythonNet 将 Bytes[] 转换为 Python 字节
- corda - corda 4.0 - 部署更新的cordpp,修改了流程
- python - 这个表达式将如何对结果进行排序 sorted(list1 ,key = lambda x:-x[0])
- java - 使用 FirefoxDriver 时的 Selenium 空白浏览器
- php - 需要支持来修复以下 XML 解析器问题。我尝试使用 xpath & var_dump 但没有成功
- kotlin - 我可以在 Windowed KTable 上调用 mapValues 来创建另一个具有类似行为的 Windowed KTable 吗?
- kubernetes - Jenkins 无法在 EKS 集群内部署应用程序
- python - 子类化 numpy ndarray 无法正常工作
- tensorflow - Keras 设置数据集
- javascript - 从子数组javascript中删除值