我有一个通过AJAX调用PHP PEAR邮件脚本的Web表单。当我直接调用我的脚本时(通过在浏览器中键入脚本的完整路径),它可以工作。当我从Web表单调用脚本时,它首次发送,但不是后续发送。
我正在使用smtp。托管有SSL。
网络托管公司确认该脚本正常运行,PEAR包的路径正常工作等。
我尝试了很多东西,并围绕这个主题阅读了大量的问题和答案。
似乎从浏览器直接运行脚本会执行jquery / ajax设置没有执行的操作。肠道感觉(我知道很糟糕......)说在使用表单时需要重新初始化某些内容。真的吗?
另一个线索是Ajax Post调用成功函数不会生成警报(见下文)。我将回声写入服务器上的文本文件 - 这也是间歇性的。
任何帮助或想法都会受到极大的欢迎。
这是邮件脚本:
<?php
/*
contact_form.php
*/
require "Mail.php";
$message = "";
$body = "";
$name = "";
$f_email = "";
$subject = "This is an email";
$name = $_POST['f_name']; // come from jquery
$f_email = $_POST['f_email']; // come from jquery
$message = $_POST['f_message']; // come from jquery
$body = "Sender name: " . $name . "\n";
$body .= "Senders email address: " . $f_email . "\n\n";
$body .= $message;
$from = "Mail from the web form <info@mydomain.com>";
$to = "Info <info@mydomain.com>"; // tried different email accounts including gmail
$host = "smtp.mydomain.com";
$username = "email-username";
$password = "the-password";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);
$fp = fopen('myerrs.txt', 'a');
fwrite($fp, $body);
fclose($fp);
echo "sent";
?>
这是电话:
$('#contactform').submit(function(){
var f_name = $('#f_name').val();
var f_email = $('#f_email').val();
var f_message = $('#f_message').val();
// an alert works here and the variables are passed correctly.
$.post("thepathto/contact_form.php",
{
f_name:f_name,
f_email:f_email,
f_message:f_message
},
function(data){
alert('data = ' + data); // this alert does not work
});
});
感谢。