[英]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.