我尝试用php和axios发送邮件。我将数据存储在一些属性上,然后尝试通过axios调用post方法。电子邮件已发送,但值为空。看起来我不能在php中得到这个值。
// js
axios
.post("./vendor/sendmail.php", {
name: nameInput.value,
email: emailInput.value,
message: textarea.value
})
.then(respond => {
console.log(respond);
})
.catch(error => {
console.log(error);
});
// php
<?php
$email = $_POST['email'];
$message = $_POST['message'];
$name = $_POST['name'];
$body = "Email: {$email}\n\nName: {$name}\n\nMessage: {$message}\n\n";
mail("myemail@gmail.com", 'A new message', $body, "From: test@gmail.com");
?>我在我的收件箱里看到了:
电子邮件:
名称:
消息:
(值为空的电子邮件)
发布于 2019-07-15 22:07:56
Axios可能正在将其编码为JSON。您需要将输入读入PHP,而不是$_POST变量。给我一点时间,我要找出一些代码。
它所做的是检测PHP头,如果它是application/json,那么它将把输入读取到Content-Type中并解码它。它可以使用try/catch,只是在JSON无效的情况下。
function convertInput() {
if (!empty($_SERVER["HTTP_CONTENT_TYPE"])) {
$contentTypes = explode(";", $_SERVER["HTTP_CONTENT_TYPE"]);
if (in_array("application/json", $contentTypes)) {
$rawInput = file_get_contents('php://input');
return json_decode($rawInput, true);
}
}
return [];
}https://stackoverflow.com/questions/57041458
复制相似问题