Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP电子邮件中发送HTML表格_Php_Html_Email - Fatal编程技术网

在PHP电子邮件中发送HTML表格

在PHP电子邮件中发送HTML表格,php,html,email,Php,Html,Email,我有一个能够从gmail帐户发送电子邮件的Web服务器。我有一个页面可以根据SQL查询等生成动态表单。然后,我有一个表单可以输入您的电子邮件地址,它会重定向到另一个页面,上面写着“message sent”,该页面上的代码会发送电子邮件。但是,如何更改电子邮件的内容,使其成为上一页生成的表?我不想重新创建整个表并将其设置为一个变量,因为我认为有一种更有效的方法。任何帮助都将不胜感激 “search.php”(此页根据上一页执行的查询生成表) 桌子{ 背景色:#C0; } th{ 宽度:150p

我有一个能够从gmail帐户发送电子邮件的Web服务器。我有一个页面可以根据SQL查询等生成动态表单。然后,我有一个表单可以输入您的电子邮件地址,它会重定向到另一个页面,上面写着“message sent”,该页面上的代码会发送电子邮件。但是,如何更改电子邮件的内容,使其成为上一页生成的表?我不想重新创建整个表并将其设置为一个变量,因为我认为有一种更有效的方法。任何帮助都将不胜感激

“search.php”(此页根据上一页执行的查询生成表)


桌子{
背景色:#C0;
}
th{
宽度:150px;
文本对齐:居中;
边框样式:实心;
边框宽度:2倍;
边框颜色:黑色;
背景色:#008080;
字体系列:Helvetica;
}
运输署{
边框样式:实心;
边框宽度:2倍;
边框颜色:黑色;
字体系列:Helvetica;
背景色:#FFFF00;
文本对齐:居中;
}
身体{
背景色:#1C2932;
}
h1{
字体系列:Helvetica;
字体大小:24px;
颜色:#9898;
}
p{
字体系列:Helvetica;
字号:18px;
颜色:#9898;
}
“tablegen.php”(用于显示表格的函数)——非常有效

    <?php
function connect(){

    mysql_connect("localhost","root","water123") or die ('Error Reaching Database');
    mysql_select_db("MathGuide");


}   
    //Area  51, idk what I'm doing
function tableGen($x) {
$term=$x;
$sql = mysql_query("select * from student_info where ID like '%$term%'");
echo "<h1>STUDENT DATA for ID: $search</h1>";
echo "<table>";
echo "<tr>
<th>ID</th>
<th>Project</th>
<th>Starter Project</th>
<th>Course</th>
<th>KDs Completed in your Course</th>
<th>Projects Completed</th>
<th>Project 1</th>
<th>P1KD1</th>
<th>P1KD2</th>
<th>P1KD3</th>
<th>P1KD4</th>
<th>P1KD5</th>
<th>Project 2</th>
<th>P2KD1</th>
<th>P2KD2</th>
<th>P2KD3</th>
<th>P2KD4</th>
<th>P2KD5</th>
<th>Project 3</th>
<th>P3KD1</th>
<th>P3KD2</th>
<th>P3KD3</th>
<th>P3KD4</th>
<th>P3KD5</th>
<th>Project 4</th>
<th>P4KD1</th>
<th>P4KD2</th>
<th>P4KD3</th>
<th>P4KD4</th>
<th>P4KD5</th>
</tr>";

while ($row = mysql_fetch_array($sql))
{
echo "<tr><td>";
echo $row['ID'];
echo "</td><td>";
echo $row['Project'];
echo "</td><td>";
echo $row['Starter Project'];
echo "</td><td>";
echo $row['Course'];
echo "</td><td>";
echo $row['KDs completed in your course'];
echo "</td><td>";
echo $row['Projects Completed'];
echo "</td><td>";
echo $row['Project 1'];
echo "</td><td>";
echo $row['P 1 KD 1'];
echo "</td><td>";
echo $row['P 1 KD 2'];
echo "</td><td>";
echo $row['P 1 KD 3'];
echo "</td><td>";
echo $row['P 1 KD 4'];
echo "</td><td>";
echo $row['P 1 KD 5'];
echo "</td><td>";
echo $row['Project 2'];
echo "</td><td>";
echo $row['P 2 KD 1'];
echo "</td><td>";
echo $row['P 2 KD 2'];
echo "</td><td>";
echo $row['P 2 KD 3'];
echo "</td><td>";
echo $row['P 2 KD 4'];
echo "</td><td>";
echo $row['P 2 KD 5'];
echo "</td><td>";
echo $row['Project 3'];
echo "</td><td>";
echo $row['P 3 KD 1'];
echo "</td><td>";
echo $row['P 3 KD 2'];
echo "</td><td>";
echo $row['P 3 KD 3'];
echo "</td><td>";
echo $row['P 3 KD 4'];
echo "</td><td>";
echo $row['P 3 KD 5'];
echo "</td><td>";
echo $row['Project 4'];
echo "</td><td>";
echo $row['P 4 KD 1'];
echo "</td><td>";
echo $row['P 4 KD 2'];
echo "</td><td>";
echo $row['P 4 KD 3'];
echo "</td><td>";
echo $row['P 4 KD 4'];
echo "</td><td>";
echo $row['P 4 KD 5'];
echo "</td></tr>";
}

echo "</table>";
}//end main if

您应该将生成表的代码移动到一个PHP文件中,该文件可以包含在两者中,将连接到mysql的代码、执行查询的代码和生成表的代码放在不同的函数中

就我个人而言,我会通过使用模板引擎创建一个字符串来生成电子邮件的表,但要保留您可以使用的基于“echo”的代码,并将内容获取到一个变量。然后在
mail()
的第二个参数中发送此变量的内容,而不是读取“HTML电子邮件”的字符串


还请注意我在评论中指出的问题

您的mysql_查询容易受到SQL注入的攻击,请参阅,以了解避免它的方法。实际上,每当您包含用户输入时,您应该以某种方式对其进行清理,请参阅,因为html中的另一个$term容易受到XSST攻击。非常感谢您指出这一点!这个周末我肯定会花一些时间来堵塞安全漏洞。在第一次制作时,我并不太担心这一点,因为数据已经公开了,我只是制作了一个门户来更快地搜索数据,而不是下载整个电子表格。我是否可以通过电子邮件发送此表?您将希望使用内联样式。有些邮件客户端会忽略任何未内联到元素(即页眉中)的样式(outlook)。@ScrapsedCola想说的是,跨电子邮件客户端对HTML和CSS的支持是不同的。有些网页,如包含详细信息。如果我可以添加一个注意事项,你可以改进你的答案一点:跳过更快的部分。这通常是误导性的,只会促使年轻的程序员把注意力集中在错误的事情上。空白页通常是一个语法错误,您无法启用错误报告和日志记录,然后跟踪错误日志。如果您这样做,PHP将通过错误日志告诉您哪里出错。有关此错误和其他常见错误的更详细说明,请参阅。@ru毯fizz您也没有将
$term
作为参数传递:P.您将
$x
AKA
$\u POST['term']
传递到
connect()
但决不传递到
tableGen()
@ru毯fizz:是的,您在编程过程中一直在学习。直到程序运行。然后你脸上就会露出笑容。直到你需要再次改变它时,你会再次打破它等等。继续进行(但请理解,我们不能让您参与其中,请不要在本网站上要求单独的指导和培训-仅限于具体的编程问题-谢谢)。是的,或者更好:从问题中制定一个真正的编程问题。如果你能够正确地做到这一点,你通常已经找到了自己的答案(这真的很好),如果没有,那么,你已经有一个好问题要寻找了。
    <html>
<head>
<style>
body {
background-color:#1C2932;
}
p {
font-family: Helvetica;
font-size: 18px;
color: #989898;
}

</style>
</head>
<?php

$email = $_POST['send'];

$headers = array(
'From: summitmathguide@gmail.com',
'Content-Type: text/html',
'Content-Type: text/css'
);



mail($email,'HTML Email','I want to send an HTML table!!!',implode("\r\n",$headers));
echo "<p>Email Sent!</p>";
?>
</html>
    <?php
function connect(){

    mysql_connect("localhost","root","water123") or die ('Error Reaching Database');
    mysql_select_db("MathGuide");


}   
    //Area  51, idk what I'm doing
function tableGen($x) {
$term=$x;
$sql = mysql_query("select * from student_info where ID like '%$term%'");
echo "<h1>STUDENT DATA for ID: $search</h1>";
echo "<table>";
echo "<tr>
<th>ID</th>
<th>Project</th>
<th>Starter Project</th>
<th>Course</th>
<th>KDs Completed in your Course</th>
<th>Projects Completed</th>
<th>Project 1</th>
<th>P1KD1</th>
<th>P1KD2</th>
<th>P1KD3</th>
<th>P1KD4</th>
<th>P1KD5</th>
<th>Project 2</th>
<th>P2KD1</th>
<th>P2KD2</th>
<th>P2KD3</th>
<th>P2KD4</th>
<th>P2KD5</th>
<th>Project 3</th>
<th>P3KD1</th>
<th>P3KD2</th>
<th>P3KD3</th>
<th>P3KD4</th>
<th>P3KD5</th>
<th>Project 4</th>
<th>P4KD1</th>
<th>P4KD2</th>
<th>P4KD3</th>
<th>P4KD4</th>
<th>P4KD5</th>
</tr>";

while ($row = mysql_fetch_array($sql))
{
echo "<tr><td>";
echo $row['ID'];
echo "</td><td>";
echo $row['Project'];
echo "</td><td>";
echo $row['Starter Project'];
echo "</td><td>";
echo $row['Course'];
echo "</td><td>";
echo $row['KDs completed in your course'];
echo "</td><td>";
echo $row['Projects Completed'];
echo "</td><td>";
echo $row['Project 1'];
echo "</td><td>";
echo $row['P 1 KD 1'];
echo "</td><td>";
echo $row['P 1 KD 2'];
echo "</td><td>";
echo $row['P 1 KD 3'];
echo "</td><td>";
echo $row['P 1 KD 4'];
echo "</td><td>";
echo $row['P 1 KD 5'];
echo "</td><td>";
echo $row['Project 2'];
echo "</td><td>";
echo $row['P 2 KD 1'];
echo "</td><td>";
echo $row['P 2 KD 2'];
echo "</td><td>";
echo $row['P 2 KD 3'];
echo "</td><td>";
echo $row['P 2 KD 4'];
echo "</td><td>";
echo $row['P 2 KD 5'];
echo "</td><td>";
echo $row['Project 3'];
echo "</td><td>";
echo $row['P 3 KD 1'];
echo "</td><td>";
echo $row['P 3 KD 2'];
echo "</td><td>";
echo $row['P 3 KD 3'];
echo "</td><td>";
echo $row['P 3 KD 4'];
echo "</td><td>";
echo $row['P 3 KD 5'];
echo "</td><td>";
echo $row['Project 4'];
echo "</td><td>";
echo $row['P 4 KD 1'];
echo "</td><td>";
echo $row['P 4 KD 2'];
echo "</td><td>";
echo $row['P 4 KD 3'];
echo "</td><td>";
echo $row['P 4 KD 4'];
echo "</td><td>";
echo $row['P 4 KD 5'];
echo "</td></tr>";
}

echo "</table>";
}//end main if