Debian 9 上 js + php 的 Sendmail 问题
Sendmail problem with js + php on debian 9
我在使用 VPS 服务器发送邮件时遇到了问题。
我的服务器安装了 PHP 和 sendmail。
我尝试从 HTML 表单发送电子邮件,该表单在 JS 中检查然后在 HTML 中发送,请求启动良好但没有发送任何内容。
我的 JS 代码:
submitMail() {
const emailValue = document.getElementById('mail').value;
const subjectValue = document.getElementById('subject').value;
const messageValue = document.getElementById('text').value;
const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://ag-dev.fr/mailform.php', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = () => {
if (xhr.readyState === 4 && xhr.status === 200) {
this.sendComplet();
}
};
xhr.send(JSON.stringify({
email: emailValue,
subject: subjectValue,
message: messageValue,
}));
},
我的PHP代码:
<?php
if (!empty($_POST['message']))
{
$to = 'contact@ag-dev.fr';
$from = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'] . "\n\n\n\n Ceci est un message envoyé depuis le formulaire de contact. Pour répondre à ce mail, envoyez un mail à l'adresse suivante : " . $_POST['email'];
$headers = 'MIME-Version: 1.0\r\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1\r\n';
$headers .= 'To: Guyomar Alexis <contact@ag-dev.fr>\r\n';
$headers .= 'From: ' . ' <' . $from . '>\r\n';
mail($to,$subject,$message,$headers);
}
?>
我 运行 使用 sendmail 在我的命令行服务器上进行了测试,我收到的邮件没有问题。我认为我的代码或我的配置服务器有问题。
如果有人知道这可能来自哪里......
感谢@ADyson JSON POST 和 PHP link。
我这样解决我的问题:
<?php
$data = json_decode(file_get_contents('php://input'), true);
if (!empty($data))
{
$to = 'contact@ag-dev.fr';
$from = $data['email'];
$subject = utf8_decode($data['subject']);
$message = utf8_decode($data['message']) . utf8_decode("\n\n\n\n Ceci est un message envoyé depuis le formulaire de contact. Pour répondre à ce mail, envoyez un mail à l'adresse suivante : " . $from);
$headers = 'MIME-Version: 1.0\r\n';
$headers .= 'Content-type: text/html; charset=utf-8\r\n';
$headers .= 'To: Guyomar Alexis <contact@ag-dev.fr>\r\n';
$headers .= 'From: ' . ' <' . $from . '>\r\n';
mail($to,$subject,$message,$headers);
}
?>
现在都运行好了。
我在使用 VPS 服务器发送邮件时遇到了问题。 我的服务器安装了 PHP 和 sendmail。
我尝试从 HTML 表单发送电子邮件,该表单在 JS 中检查然后在 HTML 中发送,请求启动良好但没有发送任何内容。
我的 JS 代码:
submitMail() {
const emailValue = document.getElementById('mail').value;
const subjectValue = document.getElementById('subject').value;
const messageValue = document.getElementById('text').value;
const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://ag-dev.fr/mailform.php', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = () => {
if (xhr.readyState === 4 && xhr.status === 200) {
this.sendComplet();
}
};
xhr.send(JSON.stringify({
email: emailValue,
subject: subjectValue,
message: messageValue,
}));
},
我的PHP代码:
<?php
if (!empty($_POST['message']))
{
$to = 'contact@ag-dev.fr';
$from = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'] . "\n\n\n\n Ceci est un message envoyé depuis le formulaire de contact. Pour répondre à ce mail, envoyez un mail à l'adresse suivante : " . $_POST['email'];
$headers = 'MIME-Version: 1.0\r\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1\r\n';
$headers .= 'To: Guyomar Alexis <contact@ag-dev.fr>\r\n';
$headers .= 'From: ' . ' <' . $from . '>\r\n';
mail($to,$subject,$message,$headers);
}
?>
我 运行 使用 sendmail 在我的命令行服务器上进行了测试,我收到的邮件没有问题。我认为我的代码或我的配置服务器有问题。
如果有人知道这可能来自哪里......
感谢@ADyson JSON POST 和 PHP link。 我这样解决我的问题:
<?php
$data = json_decode(file_get_contents('php://input'), true);
if (!empty($data))
{
$to = 'contact@ag-dev.fr';
$from = $data['email'];
$subject = utf8_decode($data['subject']);
$message = utf8_decode($data['message']) . utf8_decode("\n\n\n\n Ceci est un message envoyé depuis le formulaire de contact. Pour répondre à ce mail, envoyez un mail à l'adresse suivante : " . $from);
$headers = 'MIME-Version: 1.0\r\n';
$headers .= 'Content-type: text/html; charset=utf-8\r\n';
$headers .= 'To: Guyomar Alexis <contact@ag-dev.fr>\r\n';
$headers .= 'From: ' . ' <' . $from . '>\r\n';
mail($to,$subject,$message,$headers);
}
?>
现在都运行好了。