2015-06-24 19 views
0

我想發送不同主題的電子郵件。我有以下代碼從數據庫中獲取郵件主題和消息。無法在郵件函數中嵌入變量php

$sql = "SELECT mail_subject, mail_content FROM new_business WHERE business_name = '$biz_name'"; 

$query = mysqli_query($db, $sql); 

while ($row = mysqli_fetch_array($query)) { 
     $subject = $row['mail_subject']; //Getting mail subject to send 
     $mail_content = $row['mail_content']; //Getting mail content 
        } 
echo $subject; //checking if it gets subject and it surely does. 
$to = '[email protected]'; 

mail($to, $subject, $mail_content);//Mail is not sent 

如果主題從數據庫中提取數據郵件沒有發送。我已經檢查過幾次包括垃圾郵件,並且在將郵件嵌入到郵件功能之前,檢查主題是否從數據庫獲取任何數據。它似乎得到正確的數據,但郵件不發送。

但是,當我硬編碼這樣的主題:$subject = 'this is a test subject';,郵件發送成功。爲什麼郵件功能不讓我嵌入從數據庫中獲取主題的變量?我需要從數據庫發送不同主題的郵件。什麼是解決方案?

+0

你確定'$ subject'(當不是從數據庫中硬編碼時)是一個有效的編碼字符串嗎? –

+0

檢查您是否正確地從數據庫中獲取數據。 –

+0

用'while($ row = mysqli_fetch_array($ query,MYSQLI_ASSOC))'嘗試並替換'while($ row = mysqli_fetch_array($ query))',並且在他的回答中聲明缺少'''的@ b0s3可能是理由也 –

回答

0

有很多東西讓你寫的代碼感到困惑。您從不檢查mysqli_調用中的錯誤情況,也不檢查mail()調用。你運行一個查詢,它將丟棄除最後一行以外的所有數據(如果有的話)。然而,使用mail()診斷問題的方法不是看你的收件箱。在超過99%的情況下,問題出在PHP和MTA之間的接口或MTA配置本身。

您沒有提供任何細節。

我會建議你使用簡單:

mail('[email protected]', 'test', date('r')); 

並開始調試您的MTA。

獨立您可以使用批量電子郵件腳本,只需寫入文件而不是調用mail(),直到兩個部分都可以工作。