2012-01-18 14 views
0

我寫一個PHP腳本,將通過一個cron每天晚上發送電子郵件。在這個腳本中,我有多個輸出特定文本的函數。然後,我嘗試發送電子郵件中這些功能的內容。出於某種原因,電子郵件通過正常,但內容正文顯示爲空。如果有更好的方式來做到這一點,我會盡其所能。的方式發送功能的消息在PHP的郵件()

function function1() { 
    global $new; 
    echo "<p>"; 
    while ($row = mysql_fetch_array($query)) $content = $row["COUNT(column1)"]; 
    if ($content != 0) echo "output1"; 
    else echo "output2"; 
    echo "</p>"; 
} 
$emailMessage = function1().function2().function3(); 

if ($_GET['version'] == "email") { 
    mail ($emailTo, $emailSubject, stripslashes($emailMessage)); 
} 
else echo $emailMessage; 

很明顯,代碼被混淆了一下,但總體大綱在那裏。

回答

4

echo將輸出發送到標準輸出,它不從函數返回。嘗試這個。

ob_start() 

// run function contents, including echo 

var message = ob_get_clean(); 
return message; 

這將捕獲你echo到緩衝區,防止緩衝器被髮送,然後讀取緩存到一個變量。然後它會清空下一次準備好的緩衝區。

+0

應該ob_start()在整個PHP頁面的開頭或每個獨立的功能調用? – bswinnerton 2012-01-18 15:36:21

+0

整個頁面,我想。嘗試一下。 – Joe 2012-01-18 15:38:37

+0

非常感謝,這工作。雖然不需要var。 – bswinnerton 2012-01-18 15:42:09