2014-01-30 80 views
0

我有一個網站的形式,您可以發送消息到我的電子郵件地址。但它還沒有工作。我不確定要做什麼。以下是我迄今所做的:發送郵件從網站ubuntu,php,ajax

的PHP:

<?php 
if (isset($_POST['from']) && isset($_POST['header']) && isset($_POST['message'])) { 
$to = "[email protected]"; 
$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'); 
    } 


} 
?> 

的JS:

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

     } 
}); 

有什麼錯我的代碼還是我失去了一些東西? 電子郵件應該被髮送到一個Gmail帳戶。

+0

最新錯誤??? – ghost

+0

爲什麼你使用json作爲你的數據類型,但也回聲JSON和純文本? –

+0

似乎很奇怪,你會通過帖子中的標題。這是一個PHP郵件的可選設置,嘗試沒有頭聲明,並看看你是否得到一個純文本電子郵件。 – pathfinder

回答

1

沒有足夠的觀點來評論問題...但只是想確認您在系統上設置了郵件傳輸代理。如果不是,那可能是罪魁禍首。

如果這還沒有完成,您可以參考sendmail: how to configure sendmail on ubuntu?https://help.ubuntu.com/12.04/installation-guide/i386/mail-setup.html來實現。

+0

哈哈是的,我想我可能需要這樣的東西:)我會設置它並回到這裏結果 – Koiski

+0

太棒了!如果您需要通過其發送電子郵件的服務,請[SendGrid](http://www.sendgrid。com)每天免費提供200封電子郵件,並提供有關如何使用[sendmail](http://sendgrid.com/docs/Integrate/Mail_Servers/sendmail.html)以及[PHP代碼例](http://sendgrid.com/docs/Code_Examples/php.html)。 – BlakePetersen

0

如果發送頭出了問題,你可以這樣做:首先 CONCAT所有值到一個變量

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 = "[email protected]"; 
$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'); 
    } 


} 
?> 

這個答案只是另一種替代方式,更根據您的評論。

1

嘗試像這樣,嘗試發送從服務器端客戶端完整的JSON響應爲它解析..

(你甚至可以進入的jQuery/AJAX之前提交表單之前或條件執行JavaScript驗證)

PHP

<?php 

    if (isset($_POST['from']) && isset($_POST['message'])) 
    { 
    $to = "[email protected]"; 
    $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'); 

    ?> 

JS

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

    }); 
+0

控制檯日誌:成功,但仍然沒有新郵件在我的收件箱:( – Koiski

+0

入住垃圾郵件文件夾,請嘗試檢查apache的'error.log'? – Aditya

+0

我需要安裝郵件傳輸代理,我會回來這裏的結果 – Koiski