Php simple mail(),它将从mysql生成获取的报告

Php simple mail(),它将从mysql生成获取的报告,php,mysql,email,Php,Mysql,Email,使用简单的mail()函数在php中发送邮件 我想发送一封邮件,该邮件将生成一份从mysql数据库获取的报告,但mail()需要4个参数mail($to、$subject、$message、$from)我无法生成$message,因为它将保存带有获取值和特定格式的邮件正文 myscript.php生成报告:- <?php $to = 'abc@gmail.com' . ', '; $subject = 'Test Mail'; $query=mysql_query("SELECT *

使用简单的
mail()
函数在php中发送邮件

我想发送一封邮件,该邮件将生成一份从mysql数据库获取的报告,但
mail()
需要4个参数
mail($to、$subject、$message、$from)
我无法生成
$message
,因为它将保存带有获取值和特定格式的邮件正文

my
script.php
生成报告:-

<?php
$to  = 'abc@gmail.com' . ', ';
$subject = 'Test Mail';

$query=mysql_query("SELECT * from table_name ");

echo'<html>
<head>
<title>Testing</title>
</head>
<h1>Test User</h1>
<table border="1" cellspacing="1">

<tr>
<th>id</th>
<th>user</th>
<th>phoneCount</th>';

while($row = mysql_fetch_array($query))
 {
echo  "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['user'] . "</td>";
echo "<td>" . $row['phone'] . "</td>";
echo "</tr>";
}
echo "</table>";      
echo "</html>";

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// More headers
$headers .= 'From: <from@example.com>' . "\r\n";
mail($to, $subject, $msg, $headers);
?>


由于我得到了$to、$subject、$headers的值,但$msg产生了问题。我如何才能以这种格式发送邮件。我不知道如何以$msg格式获取邮件正文,它将生成报告

更改这部分代码:

echo'<html>
<head>
<title>Testing</title>
</head>
<h1>Test User</h1>
<table border="1" cellspacing="1">

<tr>
<th>id</th>
<th>user</th>
<th>phoneCount</th>';

while($row = mysql_fetch_array($query))
 {
echo  "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['user'] . "</td>";
echo "<td>" . $row['phone'] . "</td>";
echo "</tr>";
}
echo "</table>";      
echo "</html>";
echo'
测试
测试用户
身份证件
用户
电话计数';
while($row=mysql\u fetch\u array($query))
{
回声“;
回显“$row['id']”;
回显“$row['user']”;
回显“$row['phone']”;
回声“;
}
回声“;
回声“;
如下所示:

$msg = '<html>
<head>
<title>Testing</title>
</head>
<h1>Test User</h1>
<table border="1" cellspacing="1">';

$msg = $msg . "<tr>";
$msg = $msg . "<th>id</th>";
$msg = $msg . "<th>user</th>";
$msg = $msg . "<th>phoneCount</th>";
while($row = mysql_fetch_array($query))
 {
$msg = $msg . "<tr>";
$msg = $msg ."<td>" . $row['id'] . "</td>";
$msg = $msg ."<td>" . $row['user'] . "</td>";
$msg = $msg ."<td>" . $row['phone'] . "</td>";
$msg = $msg ."</tr>";
}
$msg = $msg . "</table>";      
$msg = $msg . "</html>";
$msg=”
测试
测试用户
';
$msg=$msg。"";
$msg=$msg。“身份证”;
$msg=$msg。“用户”;
$msg=$msg。“电话计数”;
while($row=mysql\u fetch\u array($query))
{
$msg=$msg.“;
$msg=$msg.“$row['id']”;
$msg=$msg.“$row['user']”;
$msg=$msg.“$row['phone']。”;
$msg=$msg.“;
}
$msg=$msg。"";      
$msg=$msg。"";

这是一种最简单的形式,而不是将要分配给变量的内容重复出来

您有几个选项可以执行此操作:

1) 可变浓度

$message = '<p>Line 1</p>';
$message .= '<p>' . $line2 . '</p>';
$message .= '<p>Line 3</p>';
$message='第1行

'; $message.=''$第2行。”

",; $message.='第3行

';
$message的内容将是:

<p>Line 1</p><p>Line 2</p><p>Line 3</p>
第1行

第2行

第3行

2) 输出缓冲

ob_start(); // http://www.php.net/manual/en/function.ob-start.php

echo '<p>Line 1</p>';
echo '<p>' . $line2 . '</p>';
echo '<p>Line 3</p>';

$message = ob_get_clean(); // http://www.php.net/manual/en/function.ob-get-clean.php
ob_start();//http://www.php.net/manual/en/function.ob-start.php
回显“第1行”

; 回音“”$第2行。”

",; 回显“第3行”

”; $message=ob_get_clean();//http://www.php.net/manual/en/function.ob-get-clean.php
3) herdoc语法(这种方法可能会变得棘手,我现在不推荐使用)


$message=您正在将内容回显到屏幕上,而不是在您的
$msg
变量中捕获内容。我需要将该变量存储在哪里。我需要在回显部分分配变量还是mysql语句的查询。如果分配变量,我将无法在浏览器中看到它。语法错误,意外的“$msg”(T_变量)在Browser中运行时,缺少分号或格式中的某些内容可能“;以”结尾的“;将在$msg=$msg.phoneCount”中,这样做不会显示错误。要清除此错误,可以选择。=而不是=$msg.blah”,也可以插入数组值,如:“{$row['id']}”
$message = <<<EOT

<p>Line 1</p>
<p>$line2</p>
<p>Line 3</p>

EOT;