从ubuntu、php、ajax网站发送邮件

从ubuntu、php、ajax网站发送邮件,php,jquery,ajax,email,Php,Jquery,Ajax,Email,我有一个网站,上面有一个表格,你可以把信息发送到我的电子邮件地址。但它还不起作用。我真的不确定要做什么。以下是我迄今为止所做的工作: PHP: <?php if (isset($_POST['from']) && isset($_POST['header']) && isset($_POST['message'])) { $to = "example@awesomemail.com"; $subject = $_POST['from']; $b

我有一个网站,上面有一个表格,你可以把信息发送到我的电子邮件地址。但它还不起作用。我真的不确定要做什么。以下是我迄今为止所做的工作:

PHP:

<?php   
if (isset($_POST['from']) && isset($_POST['header']) && isset($_POST['message'])) { 
 $to = "example@awesomemail.com";
 $subject = $_POST['from'];
 $body = $_POST['message'];
 $headers = $_POST['header'];

 if (mail($to, $subject, $body, $headers)) {
   echo("<p>Email successfully sent!</p>");
   echo json_encode('success');
  } else {
   echo("<p>Email delivery failed…</p>");
   echo json_encode('failed');
  }


} 
?> 
我的代码是否有问题,或者我是否遗漏了什么?
电子邮件应该发送到gmail帐户。

如果发送标题有问题,您可以这样做: 首先将所有值合并为一个变量

 var string = 'mail='+from+'/'+header+'/'+message;

$.ajax({
   type : "POST",
   url : "sendmail.php",
   data:  string,
   dataType: "json",
   success: function(msg){  
       alert(msg);     

   }
});
sendmail.php

<?php   
if (isset($_POST['mail']) && !empty($_POST['mail'])) { 
 $msg = explode('/','$_POST['mail']');

 $to = "example@awesomemail.com";
 $subject = $msg[0];
 $headers = $msg[1];
 $body = $msg[2];

 if (mail($to, $subject, $body, $headers)) {
   echo("<p>Email successfully sent!</p>");
   echo json_encode('success');
  } else {
   echo("<p>Email delivery failed…</p>");
   echo json_encode('failed');
  }


} 
?> 

这个答案只是另一种选择,更多的是基于你的评论。
(您可以在提交表单之前执行javascript验证,也可以在输入jquery/ajax之前执行带条件的验证)

尝试这样做,尝试将完整的json响应从服务器端发送到客户端,以供解析

PHP

<?php

  if (isset($_POST['from']) && isset($_POST['message'])) 
  { 
     $to = "example@awesomemail.com";
     $subject = $_POST['from'];
     $body = $_POST['message'];

     $headers =  urldecode($_POST['header']);

     if (mail($to, $subject, $body, $headers))
     echo json_encode('success'); 
     else 
     echo json_encode('failed');

    } 
    else
    echo json_encode('failed');

     ?> 
    $.post('sendmail.php',{"from": from ,"header" :header, "message":message},function(response) 
   {     
        var response = $.parseJSON(response);           
        console.log(response);

   });

没有足够的分数来评论问题。。。但我只是想确认你在系统上设置了邮件传输代理。如果不是,那可能就是罪魁祸首


如果这项工作还没有完成,您可以参考或着手进行。

为什么您要使用json作为数据类型,但还要回显json和纯文本?在文章中传递标题似乎有些奇怪。这是php邮件的一个可选设置,请在没有标题声明的情况下尝试,然后查看是否收到纯文本电子邮件。如果我删除它,我会得到以下信息:注意:未定义索引:第4行中的C:…sendmail.php注意:未定义索引:第5行中的消息:…php注意:未定义索引:第6行中的标题:…sendmail.php电子邮件已成功发送!“valid”还有带有“msg”的警报消息从未出现,删除标题部分无效。控制台日志:成功,但我的收件箱中仍然没有新邮件:(签入垃圾邮件文件夹,尝试检查apache的
error.log
?我知道我需要安装邮件传输代理,我会带着结果返回这里是的,我想我可能需要这样的东西:)我将进行设置并返回此处,结果如下:WeSome!如果您需要发送电子邮件的服务,每天免费提供200封电子邮件,并提供有关如何使用以及快速设置的文档。感谢您的帮助一切正常:)结束使用本指南:
    $.post('sendmail.php',{"from": from ,"header" :header, "message":message},function(response) 
   {     
        var response = $.parseJSON(response);           
        console.log(response);

   });