使用简单的 mail()
函数在 php 中发送邮件。
我想发送邮件,该邮件将生成从 mysql 数据库获取的报告,但 mail()
需要 4 个参数mail($to,$subject,$message,$from )
我无法生成 $message
因为它将包含具有获取的值和特定格式的邮件正文。
我的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 将生成报告
最佳答案
以其最简单的形式,而不是回显内容,您希望将其分配给变量。
您有几个选项可以执行此操作:
1)变量串联
$message = '<p>Line 1</p>';
$message .= '<p>' . $line2 . '</p>';
$message .= '<p>Line 3</p>';
$message 的内容将是:
<p>Line 1</p><p>Line 2</p><p>Line 3</p>
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
3) Heredoc 语法(这种方法可能会很棘手,我现在不推荐它)
$message = <<<EOT
<p>Line 1</p>
<p>$line2</p>
<p>Line 3</p>
EOT;
这 3 种方法中的每一种都可以让您将内容分配到 $message 中。
但是默认情况下邮件只会发送纯文本电子邮件。如果您想发送 HTML 电子邮件,您需要设置特定的 header ,理想情况下您应该设置多部分边界等。我可能会建议使用像 Zend 这样的库,您可以逐个包含它。如果失败的话,这是一个基本示例:http://css-tricks.com/sending-nice-html-email-with-php/
希望有帮助。
关于php - 简单的 mail() 将从 mysql 生成一个获取的报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24456084/