Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过AJAX发送的PHP PEAR邮件无法正常工作-直接调用邮件脚本可以完美工作_Php_Jquery_Ajax_Smtp_Pear - Fatal编程技术网

通过AJAX发送的PHP PEAR邮件无法正常工作-直接调用邮件脚本可以完美工作

通过AJAX发送的PHP PEAR邮件无法正常工作-直接调用邮件脚本可以完美工作,php,jquery,ajax,smtp,pear,Php,Jquery,Ajax,Smtp,Pear,我有一个通过AJAX调用PHP PEAR邮件脚本的web表单。当我直接调用脚本时(通过在浏览器中键入脚本的完整路径),它可以工作。当我从web表单调用脚本时,它会第一次发送,但不会在以后发送 我正在使用smtp。主机具有SSL 网络托管公司确认脚本工作正常,PEAR包的路径工作正常等等 我试过很多东西,读过很多关于这个话题的问题和答案 从browser direct运行脚本似乎做了jquery/ajax设置没有做的事情。Gut feel(我知道很糟糕…)说在使用表单时需要重新初始化某些内容。这是

我有一个通过AJAX调用PHP PEAR邮件脚本的web表单。当我直接调用脚本时(通过在浏览器中键入脚本的完整路径),它可以工作。当我从web表单调用脚本时,它会第一次发送,但不会在以后发送

我正在使用smtp。主机具有SSL

网络托管公司确认脚本工作正常,PEAR包的路径工作正常等等

我试过很多东西,读过很多关于这个话题的问题和答案

从browser direct运行脚本似乎做了jquery/ajax设置没有做的事情。Gut feel(我知道很糟糕…)说在使用表单时需要重新初始化某些内容。这是真的吗

另一个线索是Ajax调用后成功函数不会生成警报(见下文)。我将回音写入服务器上的文本文件-这也是间歇性的

任何帮助或想法都会受到极大的欢迎

以下是邮件脚本:

<?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";

?>

谢谢。

你能在浏览器开发者工具中看到ajax请求吗?@ramesh不,我看不到调用。web表单与其他内容显示在同一页面上-它们都共享同一个div。在显示web表单之前,我清空了div。阅读此答案后,我改变了方法:我想感谢上面的贡献者,但没有代表:)
$('#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               
    });

});