簡體   English   中英

無法使用郵件功能發送電子郵件

[英]Cannot send email using mail function

第一個問題和第一次看PHP,請耐心等待。

我目前有下面的jQuery,它正在調用php文件:

$(document).on('click', '#btnContactUs', function () {

    var name = $("input#name").val();
    var email = $("input#email").val();
    var subject = $("input#subject").val();
    var message = $("input#message").val();

    var dataString = 'name='+ name + '&email=' + email + '&subject=' + subject + '&message=' + message;


    $.ajax({
        type: "POST",
        url: "php/message.php",
        data: dataString,
        success: function(response) { alert(response); }
      });

    return false;
    });

控制台將呼叫記錄為成功(XHR完成加載:POST“ php / message.php”)。

以下是文件中的完整腳本:

<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?> 

電子郵件未發送/接收(我也在檢查垃圾郵件)。

這些文件托管在已安裝PHP的Web服務器上。 警報框彈出,但為空。 最初的AJAX調用是通過網頁上的“提交”按鈕進行的​​。

編輯:我將此發送到我的個人電子郵件,我上面沒有包括在內。

編輯:即使訪問腳本的URL,電子郵件仍未發送。

最終編輯:解決方案是我的服務器未安裝PHP郵件-不支持,因為它被認為不可靠,因此建議使用SMTP。 為了弄清楚這一點,我使用了DrewT的使用SSH來檢查“哪個sendmail”的解決方案。

希望這種情況將來對某人有所幫助。

謝謝大家

似乎正在發生的事情是您沒有以正確的格式發送信息,因為您沒有在服務器上解析var dataString。 我會嘗試類似的東西:

var name = $("input#name").val();
var email = $("input#email").val();
var subject = $("input#subject").val();
var message = $("input#message").val();

然后在您的帖子功能中:

$.ajax({
    type: "POST",
    url: "php/message.php",
    data : { name: name, email: email, subject: subject, message: message },
    success: function (response, status, err) {
         // do stuff... 
         // NOTE: don't return false or it won't send
         // 'return false' only if the form is incomplete
         // and you don't want the email sent out prematurely
    }
});

然后在您的PHP中接收這些var:

$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];

現在,您可以發送這樣的電子郵件:

// Enter your send email address
$to = 'email@example.com';
// Add your headers
$header = "from: $name <$email>";

// only send it if we have all the data we need
if( $subject !== "" || " " && $message !== "" || " " && $name !== "" || " " && $mail_from !== "" || " " ) {

    $send_contact = mail($to,$subject,$message,$header);

    // check if message was sent
    // and provide some formatting (html) to send along in our response
    if ($send_contact) {
        echo '<div class="msg-sent">
                    Your message was sent successfully yay!
              </div>';
    }
    else {
        echo '<div class="msg-send-failed">
                  SEND FAILED :0
              </div>';
    }
}
else {
    echo '<div class="msg-had-empty">
                  YOU HAD EMPTY POST VARIABLES :0
          </div>';
}

除此之外,您還需要使用瀏覽器檢查器中的“網絡”標簽進行調試。/祝您好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM