2012-08-16 66 views
0

朋友,这看起来应该很容易,但我画了一个空白。我想给人们发送一个链接。他们应该输入他们的电子邮件地址,点击“提交”,并将电子邮件显示在他们的收件箱中。 PHP必须是一个外部文件。所以,我的网页我有...PHP:从外部脚本发送电子邮件

<form action="http://www.myotherdomain.com/email.php" method="post">Email: 
    <input type="text" name="email" /> 
    <input type="submit" /> 
</form> 

在我的PHP文件我有...

<?php 
    $to = $_POST["email"]; 
    $subject = "Test mail"; 
    $message = "Hello! This is a simple email message."; 
    $from = "[email protected]"; 
    $headers = "From:" . $from; 
    mail($to,$subject,$message,$headers); 
?> 

它工作正常,并发送电子邮件,但它之后带我到email.php页我点击提交按钮。我不想离开我所在的页面。我只是想点击按钮,并发送电子邮件,而不离开我的页面。奖励将是一封邮件,表示电子邮件已发送。

谢谢!

+2

如果你不想然后重定向你需要AJAX。 – j08691 2012-08-16 17:53:27

回答

0

如果您想在没有页面加载的情况下执行此操作,则需要使用AJAX。如果你确定表单提交导致页面加载,那么你有两个选择。可以将电子邮件逻辑放入当前页面并将页面重新发布到自身,或者执行从mail.php脚本重定向到用户来自的页面。

0

您可以添加和目标的iframe:

<form action="http://www.myotherdomain.com/email.php" target="aframe" method="post">Email: 
    <input type="text" name="email" /> 
    <input type="submit" /> 
</form> 

<iframe src="about:blank" style="display:none" name="aframe" id="aframe"></iframe> 

无需阿贾克斯,这也为用户的工作没有JavaScript的,但消息“电子邮件发送”左右将是有益的。你可以回显email.php提示:

echo "<script type='text/javascript'>alert(\"Email sent\");</script>"; 

真实简单的例子,你如何能做到这一点。

0

你有两个选择要么使用AJAX(jQuery的将是一个快速的解决方案)

$('form').submit(function(){ 
    $.ajax({ 
     type: 'POST', 
     url: 'http://www.myotherdomain.com/email.php', 
     data: $(this).serialize(), 
     success: function(data) { 
      alert('Message sent!'); 
     } 
    }); 
    return false; 
}); 

或做重定向邮件完成后:

header('Location: http://www.yourdomain.com'); 
exit; 
+0

我试过你的ajax编码成功,发现它由于某种原因失败。 – Layne 2012-08-16 21:17:58

0

你需要做到这一点jQuery的/阿贾克斯。下面是一个简单的脚本,应该与当前页面调用email.php工作:在身体

<script src="http://code.jquery.com/jquery-1.7.min.js"></script> 

<script type="text/javascript" > 
function process(email){ 
$.post("email.php",{email:email},function(result){ 
alert(result); 
}); 

}; 
</script> 

<img src="whatever.png" onClick="process('[email protected]');">