PHP邮件未正确发送

PHP邮件未正确发送,php,html,email,phpmailer,Php,Html,Email,Phpmailer,希望有人能帮助我。我正在使用PHP mailer发送我的机器每日生产报告(显然是为了让我的生活更轻松),但我发送的每封邮件在邮件正文中只返回“1”。如果有人能帮忙,我不知道我哪里出错了 这是我的PHPMailer代码: require 'PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->isSMTP(true); $mail->Host = 'smtp.

希望有人能帮助我。我正在使用PHP mailer发送我的机器每日生产报告(显然是为了让我的生活更轻松),但我发送的每封邮件在邮件正文中只返回“1”。如果有人能帮忙,我不知道我哪里出错了

这是我的PHPMailer代码:

require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP(true);                                     
$mail->Host = 'smtp.gmail.com:465';  
$mail->SMTPAuth = true;                               
$mail->Username = 'XXXXXXX';              
$mail->Password = 'XXXXXXX';                   
$mail->SMTPSecure = 'ssl';       
$mail->isHTML(true);
$mail->From = 'XXXXXXX';
$mail->FromName = 'Automated Reporting';
$mail->addAddress('XXXXXXX@XXXXXXX');    
$mail->addReplyTo('XXXXXXX@XXXXXXX');
$mail->isHTML(true);                                  
$mail->Subject = 'Daily Production Report ';
$mail->Body    = include_once('./scripts/Daily.php');
$mail->SMTPDebug = 0;
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}
当我运行这个脚本时,它将返回我需要的值(daily.php),并在屏幕上正确显示,我还收到一条消息,表明邮件已发送。但我收到的邮件正文中只有“1”,没有其他内容

DAILY.php的内容

<?php

$mydate=getdate(date("U"));

//OPEN Table for the production report
echo "<h1> ".$mydate['weekday'] , " " , $mydate['month'] , " " , $mydate['mday'], " " , $mydate['year']." :: " , " 311 Warehouse" , "</h1>";
echo "<table width=100% border=1>";
echo "<tr>";
echo "<th width=124>Shift / Line</th>";
echo "<th width=124>Handset</th>";
    echo "<th width=124>Handset EOL</th>";
    echo "<th width=124>Wallet 1</th>";
    echo "<th width=124>Wallet 2</th>";
    echo "<th width=124>Wholesale</th>";
    echo "<th width=124>Wholesale EOL</th>";
    echo "<th width=124>Blister</th>";
    echo "<th width=124>Blister EOL</th>";
    echo "</tr>";


    $SCADA = mysqli_connect("XXXXXXX","XXXXXXX","XXXXXXX","XXXXXXX");

//MYSQL Connection Error
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }

    $values = array();

 //311 Working Queries
    echo "<tr>";

    echo "<th width=124>DayShift : </th>";

    //Handset Kitting Totals
        $query = "select count(id) from HandsetKit_T where createdDate between '2014-06-23 05:00' and '2014-06-23 14:00';";
        $result = $SCADA->query($query) or die($SCADA->error.__LINE__);
        if($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
                echo "<td width=124>", stripslashes($row['count(id)']);
            }
        }
        else {
            echo 'NO RESULTS';
        }

    //Handset Kitting EOL Totals
        $query = "SELECT CONCAT 
    (
    (SELECT COUNT(p.id) as 'PalletS'
        FROM Pallet_T p, PalletNotify_T pn 
        WHERE p.id = pn.`palletID` 
        AND p.createdDate BETWEEN '2014-06-23 05:00' and '2014-06-23 14:00'
        AND pn.esbStatus = '3'
        AND p.mtnAssetID NOT LIKE '11' AND p.mtnAssetID NOT LIKE '12'
    ) , ' / ' ,
    (SELECT COUNT(p.id) as 'PalletF'
        FROM Pallet_T p, PalletNotify_T pn 
        WHERE p.id = pn.`palletID` 
        AND p.createdDate BETWEEN '2014-06-23 05:00' and '2014-06-23 14:00'
        AND pn.esbStatus = '4'
        AND p.mtnAssetID NOT LIKE '11' AND p.mtnAssetID NOT LIKE '12'
    )) AS 'HK EOL'";
        $result = $SCADA->query($query) or die($SCADA->error.__LINE__);
        if($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
                echo "<td width=124>", stripslashes($row['HK EOL']);
            }
        }
        else {
            echo 'NO RESULTS';
        }

    //Wallet One Totals 
    $query = "select count(id) 
    from Kit_T where mtnAssetID = '3' and createdDate between '2014-06-23 05:00' and '2014-06-23 14:00';";
    $result = $SCADA->query($query) or die($SCADA->error.__LINE__);
    if($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            echo "<td width=124>", stripslashes($row['count(id)']);
        }
    }
    else {
        echo 'NO RESULTS';
    }

    //Wallet Two Totals
    $query = "select count(id) 
    from Kit_T where mtnAssetID = '10' and createdDate between '2014-06-23 05:00' and '2014-06-23 14:00';";
    $result = $SCADA->query($query) or die($SCADA->error.__LINE__);
    if($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            echo "<td width=124>", stripslashes($row['count(id)']);
        }
    }
    else {
        echo 'NO RESULTS';
    }


    //Wholesale Bricking Totals
    $query = "SELECT COUNT(b.id) as totals
    FROM Brick_T b, BrickNotify_T bn
    WHERE b.id = bn.brickID
    AND createdDate BETWEEN '2014-06-23 05:00' and '2014-06-23 14:00'
    AND bn.esbStatus = '3'";
    $result = $SCADA->query($query) or die($SCADA->error.__LINE__);

    if($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            echo "<td width=62>", stripslashes($row['totals']);
        }
    }
    else {
        echo 'NO RESULTS';
    }


    //Wholesale EOL Totals
        $query = "SELECT CONCAT 
    (
    (SELECT COUNT(p.id) as 'PalletS'
        FROM Pallet_T p, PalletNotify_T pn 
        WHERE p.id = pn.`palletID` 
        AND p.createdDate BETWEEN '2014-06-23 05:00' and '2014-06-23 14:00'
        AND pn.esbStatus = '3'
        AND p.mtnAssetID = '12'
    ) , ' / ' ,
    (SELECT COUNT(p.id) as 'PalletF'
        FROM Pallet_T p, PalletNotify_T pn 
        WHERE p.id = pn.`palletID` 
        AND p.createdDate BETWEEN '2014-06-23 05:00' and '2014-06-23 14:00'
        AND pn.esbStatus = '4'
        AND p.mtnAssetID = '12'
    )) AS 'WEOL'";
        $result = $SCADA->query($query) or die($SCADA->error.__LINE__);
        if($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
                echo "<td width=124>", stripslashes($row['WEOL']);
            }
        }
        else {
            echo 'NO RESULTS';
        }


    //Blister Totatls
    $query = "SELECT COUNT(bb.id) as totals
    FROM BlisterBrick_T bb, BlisterBrickNotify_T bbn
    WHERE bb.id = bbn.blisterBrickID
    AND createdDate BETWEEN '2014-06-23 05:00' and '2014-06-23 14:00'
    AND bbn.esbStatus = '3'";
    $result = $SCADA->query($query) or die($SCADA->error.__LINE__);

    if($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            echo "<td width=62>", stripslashes($row['totals']);
        }
    }
    else {
        echo 'NO RESULTS';
    }

    //Blister EOL Totals
    $query = "SELECT CONCAT 
    (
    (SELECT COUNT(p.id) as 'PalletS'
        FROM Pallet_T p, PalletNotify_T pn 
        WHERE p.id = pn.`palletID` 
        AND p.createdDate BETWEEN '2014-06-23 05:00' and '2014-06-23 14:00'
        AND pn.esbStatus = '3'
        AND p.mtnAssetID = '11'
    ) , ' / ' ,
    (SELECT COUNT(p.id) as 'PalletF'
        FROM Pallet_T p, PalletNotify_T pn 
        WHERE p.id = pn.`palletID` 
        AND p.createdDate BETWEEN '2014-06-23 05:00' and '2014-06-23 14:00'
        AND pn.esbStatus = '4'
        AND p.mtnAssetID = '11'
    )) AS 'WEOL'";
        $result = $SCADA->query($query) or die($SCADA->error.__LINE__);
        if($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
                echo "<td width=124>", stripslashes($row['WEOL']);
            }
        }
        else {
            echo 'NO RESULTS';
        }

    echo "</tr>";

echo "</table>";

mysqli_close($SCADA);


?>
这一行:

$mail->Body    = include_once('./scripts/Daily.php');
这是不正确的
include
通常不会“返回”任何内容,除了表示文件是否实际加载的真/假之外

您可能想要更像:

ob_start();
include_once(...);
$mail->Body = ob_end_clean();

这将捕获包含文件的输出,然后您可以将其填充到PHPMailer中。

正如其他人所说,
include
1
作为正常的成功返回值返回,但是您可以通过在包含的文件中使用
return
语句来获得,因此如果您让Daily.php返回适当的字符串,您的原始代码可以正常工作。使用输出缓冲相当低效

顺便说一句,include不是一个函数,因此路径周围不需要括号:

$mail->Body    = include './scripts/Daily.php';

另外,您不希望
包含一次\u
——如果您以前包含过它,它将返回布尔值true,而不是预期的返回值。

有趣的解决方案!我还想知道OP是否希望在发送之前对脚本的内容进行评估……嗨,伙计们,谢谢你们的及时回复,实际上我并不打算在发送之前对邮件的内容进行评估。我想基本上自动化我的报告。php脚本连接到我的MySQL数据库,并提取前一天的生产数据。但您将include()视为一个常规函数。不是。它的任务是加载一个指定的文件并执行它。@MarcB如何将从daily.php返回的数据获取到电子邮件正文中?我已经用这个文件的内容更新了原来的帖子。谢谢各位,我已经用@MarcB suggestion解决了这个问题。刚刚添加了一个变量$mailbody=ob_get_contents();它将内容放入一个变量中,我稍后在$mail->Body标记中调用该变量。
$mail->Body    = include './scripts/Daily.php';