我有这个表格,我发送邮件(通过发布方法):
<form method="POST" action="sendmail.php">
<input type="text" name="sender_name" placeholder="Name" required="">
<input type="text" name="sender_email" placeholder="Email" required="">
<input type="text" name="subject" placeholder="Subject" required="">
<textarea placeholder="Message" name="message" required=""></textarea>
<input type="submit" name="send" value="SEND">
</form>
这里是sendmail.php
:
<?php
if($_POST['send'] == 'SEND'){
$to = 'queries@mydomain.com';
$subject = $_POST['subject'];
$message = $_POST['message'];
$headers = "From: ".$_POST['sender_name']." <".$_POST['sender_email'].">\r\n"; $headers = "Reply-To: ".$_POST['sender_email']."\r\n";
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
}
?>
正如您所看到的,在上面的代码中,我发送的邮件工作正常,但上述操作是通过离开当前页面来执行的
例如,在发布我的网址mydomain.com
之后,它会变为mydomain.com/sendmail.php
。
那么如何在不离开当前页面的情况下执行上述功能呢?
答案 0 :(得分:1)
你知道Ajax和jQuery吗?阅读更多内容,here。
你的ajax电话看起来像这样。
$.ajax({
url: "yourApplication/methodWhichSendsEmail",
type: "post",
data:JSON.stringify({
to : $to,
subject: $subject,
message: $message,
headers: $headers
})
}).done(function() {
//Whatever you want to do once the request is succeed. As you don't want to reload. i.e.
alert("Email Sent");
});
答案 1 :(得分:1)
通过AJAX或您可以执行以下操作:
action=""
<form>
sendmail.php
添加到index.php
(或您的主页无论如何)答案 2 :(得分:0)
您需要将表单操作设置为空。
然后在PHP代码中,您需要检查表单是否已发布。因此需要首先通过php function isset检查它然后你可以做你想做的任何事情,这只会在发布表格时发送电子邮件
if(isset ($_POST['send']) && $_POST['send'] == 'SEND'){
$to = 'queries@mydomain.com';
$subject = $_POST['subject'];
$message = $_POST['message'];
$headers = "From: ".$_POST['sender_name']." <".$_POST['sender_email'].">\r\n"; $headers = "Reply-To: ".$_POST['sender_email']."\r\n";
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
}