簡體   English   中英

PHP郵件未發送消息

[英]PHP Mail Not Sending Messages

我知道這個標題太用了,但是我找不到我的問題的答案。 這可能是因為要么我對PHP不太滿意,或者我不理解該問題,要么是因為我有一個不同的問題,但是我想我會發布它,看看是否有人可以幫助我。

我為所在城市的當地教堂開發了一個網站,並在計算機上創建了該網站,並將其作為子目錄放到我的網站上,並對其進行了全部測試。 效果很好。 客戶想要的一件事就是要有一個可以發送電子郵件的電子郵件表格。 我做到了,一切都很好。

然后,我將其上傳到教堂服務器,並認為它也很好。 但是后來我們決定嘗試發送電子郵件表格,由於某種原因,它不起作用。

我通過使用戶選擇一個單選按鈕來選擇收件人(牧師,辦公室經理等)來制作電子郵件表單,這將改變電子郵件表單的操作。 我只是做了這樣的事情:

if (recipent == "pastor") {
    document.forms[0].action = "../scripts/php/pastor_contact.php";
} else if (recipent == "pastoralAssist") {
    document.forms[0].action = "../scripts/php/pastoral_assist_contact.php";    
} else if (recipent == "famMinistry") {
    document.forms[0].action = "../scripts/php/sacra_assist_contact.php";   
} else if (recipent == "sacraAssist") {
    document.forms[0].action = "../scripts/php/fam_ministry_contact.php";   
}

我知道這不是最干凈的方法,但是效果很好。 然后,php文件看起來都與此非常相似(只是一封不同的電子郵件)”

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$formcontent="From: $name \n Email: $email \n Phone Number: $phone \n Message: $message";
$recipient = "email@example.com";
$subject = $_POST['subject'];
$mailheader = "$subject \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("There seems to be an error with this form. Sorry about the inconveince. We are working to get this fixed.");
header('Location: ../../quickylinks/message_sent.html') ;
?>

簡而言之,這是從電子郵件表單中收集信息,將其作為電子郵件提交,然后將用戶重定向到“已發送郵件”頁面。 這適用於我的服務器,但不適用於他們的服務器,因此我認為這與他們的服務器有關。

您可以在此處查看其服務器信息並 此處進行挖掘。

當用戶發送消息時,他們會收到“ 此表格似乎有誤。對不起,抱歉。我們正在努力解決此問題。 ”盡管該代碼是相同的,但電子郵件沒有通過我的服務器,它在那里工作正常。

我最初的想法是沒有在他們的服務器上安裝PHP(很少,但是確實發生了)。 但是確實如此。 因此,我以為可能已安裝它,但是“郵件”功能被禁用了。 所以我嘗試了以下php代碼:

<?php 
if (function_exists('mail')) { 
    echo 'mail() is available'; 
} else { 
    echo 'mail() has been disabled'; }
?>

它回來了,“ mail()可用”。

所以現在我被困住了,我不知道問題可能出在哪里。 就像我說的那樣,我還不太擅長PHP,所以如果有人可以給出詳細的答案,我將非常感謝!

非常感謝!

服務器可能沒有正確安裝或配置郵件程序。 要查看正在發生的情況並解決客戶端服務器上的問題,您需要對其具有root訪問權限,並且可能需要ssh連接到其服務器以檢查/安裝/配置必要的內容

您可能應該做的第一件事是使用ssh登錄到他們的服務器(如果僅是共享主機,則可能不適用),然后嘗試php cli接口,然后嘗試一下。

如果沒有任何效果,則需要嘗試在其服務器上編輯php.ini文件,以通知php應該使用哪種程序進行郵寄。

如果那沒有給您任何幫助,則您需要安裝和配置郵件程序 ,因為它可能無法在其服務器上正常工作。

編輯:

乍一看,他們的服務器的sendmail_path毫無價值 這可能意味着php無法確定應該通過哪個程序發送郵件。

但是,您的設置表明您具有sendmail_path設置/ usr / sbin / sendmail -t -i

因此,請在其服務器上編輯php.ini文件sendmail_path (顯然,您需要知道其服務器上sendmail程序的路徑)

您的生產服務器是Windows計算機

在新服務器上,mail()確實可用,但未配置。

為了能夠從php發送電子郵件,您需要編輯php.ini以使用smtp服務器。

您的開發服務器(Linux服務器)已經正確配置。 您的生產服務器是一台Windows計算機,需要對其進行配置以發送電子郵件(編輯php.ini)。 默認情況下,Windows不附帶內置的電子郵件服務器,因此您必須安裝一個或使用ISP提供的電子郵件服務器。

我強烈建議您使用PHPMailer類,而不要使用mail()函數。

您可以輕松配置smtp服務器(例如您的客戶端之一)並使用它發送電子郵件。

查看test_smtp_basic.php示例以獲取更多信息。

通過此"You can see their server information here"您的服務器沒有sendmail路徑 在此處輸入圖片說明

暫無
暫無

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

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