2013-10-25 57 views
0

我遇到了以下問題託管工作:PHP腳本郵件不,當我修改劇本

我有我的網站,指着一個小PHP處理器發送郵件小的形式。有「工作」,但不發送郵件。我在其他主機上測試了腳本,並且像魅力一樣工作。

我打電話給託管服務提供商,看看問題在哪裏。託管公司提供以下PHP腳本來測試郵件發送:

<?php 
$to = "[email protected]"; 
$subject = "Test mail"; 
$message = "Hello! This is a simple email message."; 
$from = "[email protected]"; 
$headers = "From:" . $from; 
mail($to,$subject,$message,$headers); 
echo "Mail Sent."; 
?> 

現在,他們告訴我,我做了必要的修改,以便它可以工作。所以我做了。 我在主頁上這個小表格(你可以看到它在pizanoecheveri.co):

<form name="form1" method="post" action="testm/mailing.php" class="miscclass" id="form1"> 
<div style="text-align: center;" id="contbaloon"><img border="0" alt="" src="/images/misc/baloon1.png"></div> 
<input type="text" name="email" class="contactfield" id="textfield"> 
<p style="text-align: right;"><input type="submit" value="Enviar" name="button" style="background-color: #bbbdc0; border: 0 none; color: #ffffff; margin-bottom: 17px; margin-top: 10px;" class="contacto-x" id="contactbutton"></p> 
</form> 

,我已經做了這樣的代碼編輯位:

<?php 
$to = "[email protected]"; 
$subject = "Lista de correos."; 
$message = "El siguiente correo se debe agregar a la lista de correo. ".$_POST["email"]; 
$from = $_POST["email"]; 
$headers = "From:" . $from; 
mail($to,$subject,$message,$headers); 
echo "Mail Sent."; 
echo $message; 
?> 

我注意到了這一點到託管服務提供商,他們說這是編程上的問題。這是我不知道sincei測試在其他主機相同的代碼,並完美地工作。

總之,我不明白爲什麼提供的代碼工作,當我編輯代碼does not工作在該主機,當在其他工作正常,沒有語法錯誤,據我看到它和Dreamweaver顯示它。

從託管的唯一細節是基於Windows的運行plesk,而其他託管我測試代碼(它的工作原理)是基於Linux的apache。兩者都運行PHP 5.2.17。

由於提前

編輯:我測試了以下修改,並沒有工作,以及對託管

<?php 
$to = "[email protected]"; 
$subject = "Lista de correos."; 
$message = "El siguiente correo se debe agregar a la lista de correo. ".$_POST["email"]; 
$from = $_POST["email"]; 
#$headers = "From:" . $from; 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: ' . $from . "\r\n"; 
mail($to,$subject,$message,$headers); 
echo "Mail Sent."; 
echo $message; 
?> 
+0

每次執行腳本時都會顯示「Mail Sent」消息。在回顯'Success'消息之前,停止*假設*事件並檢查'mail()'函數的返回值。如果仍無法使用,請檢查您的/收件人的垃圾郵件文件夾。如果您還沒有電子郵件,請檢查您的服務器日誌。 –

+0

這就是爲什麼我在其他主機首先測試。在其他託管腳本執行和消息正常到達。在需要執行的主機無法工作我的版本。正如我之前所說。從Hosting公司提供的腳本工作,但我的版本不起作用的託管。這樣的編輯我測試他們在其他託管和完美工作。 –

回答

0

請試試這個測試的代碼。只是複製和害蟲。

變化僅標頭部分

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: ' . $from . "\r\n"; 
+0

複製,粘貼,在該託管測試,不在那裏工作:( –

0

的問題是,因爲沒有安裝在主機,這是用於經由IMAP協議發送郵件..在近代一個Linux分佈擴展,也許上Sendmail所有郵件提供程序禁用處理這些請求,因爲沒有有效的發件人需要處理請求..

此解決方案使用SMTP協議,它驗證發件人a第二接收電子郵件帳戶一樣,所以它比較慢,但更安全..

你並不需要知道如何在協議的工作,你可以使用PHP庫要做到這一點,即開放源代碼PHPMailer ..

require_once('class.phpmailer.php'); 

$mail = new PHPMailer(true); 
$mail->IsSMTP(); 

try { 
    $mail->Host  = "mail.yourdomain.com"; // SMTP server 
    $mail->SMTPAuth = true;     // enable SMTP authentication 
    $mail->Host  = "mail.yourdomain.com"; // sets the SMTP server 
    $mail->Port  = 26;     // set the SMTP port for the GMAIL server 
    $mail->Username = "[email protected]"; // SMTP account username 
    $mail->Password = "yourpassword";  // SMTP account password 

    $mail->AddReplyTo('[email protected]', 'First Last'); 
    $mail->AddAddress('[email protected]', 'John Doe'); 
    $mail->SetFrom('[email protected]', 'First Last'); 

    $mail->Subject = 'Subject'; 
    $mail->MsgHTML(file_get_contents('contents.html')); 
    $mail->AddAttachment('images/phpmailer.gif'); 
    $mail->Send(); 

    echo "Message sent!"; 
} 
catch (PHPMailerException $e) { 
    echo $e->errorMessage(); 
} 
catch (Exception $e) { 
    echo $e->getMessage(); //Boring error messages from anything else! 
} 
+0

這個問題有一個小問題。因爲該網站的主要部分是Joomla這可以干擾Joomla核心? –

+0

其他事情可以解釋爲什麼來自託管服務提供商的proovided腳本正常工作在第一位? –

0

一些託管服務提供商不允許從沒有通過他們的服務器託管在其他域發送電子郵件。 在經銷商俱樂部託管的情況下...

在變量$中使用哪個電子郵件,域必須託管在同一臺服務器上。

這是一個突出的錯誤,您不會收到任何錯誤消息。