我最近一直在通過創建網頁並將它們發佈到託管在我的覆盆子pi上的apache2服務器上,並使用no-ip.com地址發佈它們,最近一直在學習HTML,js,CSS和PHP。我的第一個學習PHP的真正項目是創建一個簡單的表單,然後發送一封郵件給我,但我一直在討論mail()函數的執行問題,沒有任何錯誤,但實際上並沒有發送電子郵件。不接收來自PHP郵件()函數的電子郵件
下面的形式:
<form class="" action="/FormTesting/sendMail.php" method="post">
Name:<br><input type="text" name="name" value="" required><br>
Email:<br><input type="text" name="email" value="" required><br>
Message:<br><textarea name="message" rows="8" cols="80" required></textarea><br>
Subject:
<input type="radio" name="subject" value="Hello!">Hello!
<input type="radio" name="subject" value="Whats up">Whats Up!<br>
<input type="submit" name="submit" value="Submit">
</form>
下面是在窗體的「行動」屬性的PHP文件引用:
<?php
if($_SERVER["REQUEST_METHOD"] == "POST") {
$to = "[email protected]";
$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];
$subject = $_POST["subject"];
echo $name;
echo $email;
echo $message;
echo $subject;
$headers = array("From: " . $email,
"Reply-To: " . $to,
"X-Mailer: PHP/" . PHP_VERSION);
mail($to, $subject, $message, $header);
} else {
echo $_SERVER["REQUEST_METHOD"];
}
?>
據我所知,這個問題已經被問過,我有嘗試了其他答案中列出的大多數方法,但我仍然無法使PHP mail()函數正常工作。我得到的最好的信息是,我必須在服務器上進行某種安裝或格式化,以便發送電子郵件,但我還沒有找到有據可查的文件和/或解釋。 (即PHPMailer的 - 但仍...如何?)
編輯:
我檢查了郵件功能的返回值。 。 。
if(mail("[email protected]", "subject", "message", $headers)) {
echo "TRUE";
}else {
echo "FALSE";
}
。 。 。事實證明它正在返回假。我認爲這意味着它是我的代碼中的錯誤,然後呢?
編輯:
顯然,我並不清楚,當我說我發佈這個問題之前做了研究。我嘗試了所有的答案,作爲我作爲一個「重複」關閉的問題的答案,因此我問,無論如何這個問題。
您不檢查mail()函數的返回值。這是最不應該的。 PHP手冊中的每個函數都具有記錄的返回值,瞭解返回值並處理它以執行最少的操作 - http://php.net/mail - 編輯您的問題並解釋您期望的返回值以及返回值你得到的價值。如果郵件的回覆是真實的,而你沒有收到郵件,這就超出了PHP的範圍。 – hakre
我檢查了返回值。這是錯誤的,我不知道該怎麼做。 –
這只是意味着發送電子郵件失敗(直接)。讓你的應用程序處理它,這是一個有效的返回值(它可能發生)。其餘的是解決問題,但首先讓你的代碼與錯誤案例一起工作。例如。向用戶顯示發送電子郵件失敗的消息。 – hakre