我正在PHP中创建一个表单,用户可以通过选中其名称旁边的框将信息通过电子邮件发送给所需的收件人。
我首先查询数据库,然后在while循环中动态创建复选框。复选框看起来像这样。
<input name='email[]' id='$email' value='$email' type='checkbox'>
提交时我发布数组
$students = $_POST['email'];
然后我设置主题,消息和标题,并使用foreach循环设置收件人并发送消息。
$subject = $planTitle; // Give the email a subject
$message = nl2br($_POST['planCont']);
$headers = 'From:' . $user . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
foreach ($students as $to) {
mail($to, $subject, $message, $headers);
}
我还尝试将主题,消息和标题放在foreach循环中,但这也不起作用。
不应该这样做吗?
为了测试并查看可能发生的情况,我尝试发送给一个收件人并实际输入电子邮件地址(如student@example.com)和变量(如$ user)。这些工作让我知道我很亲近。
我唯一的两个想法是,当我登录测试并发送消息时,$ user电子邮件地址是一个Gmail帐户。我知道可能存在问题,我不知道当我尝试发送到阵列时是否会出现这些问题。
我的另一个猜测是,我所连接的网络不知何故吓坏了,但我只是通过尝试发送到3个电子邮件地址的数组进行测试,所以我不认为这将是一个问题。
让我知道任何想法,或者您是否需要查看更多代码。
修改
这里有一些我要求的代码。我最初只是在while循环后结束我的PHP,然后用纯HTML格式标题和内容。但我认为这也可能导致这个问题。
echo "<form method='post' action='' id='myPlan' data-ajax='false'>";
$result = mysql_query("SELECT first,last,email,grade,status FROM students WHERE ministryID='$ministryID2'");
while($row = mysql_fetch_array($result))
{
$first = $row['first'];
$last = $row['last'];
$email = $row['email'];
$grade = $row['grade'];
$status = $row['status'];
echo "<tr class='myRow'><td style='padding-right:15px;'><input name='email[]' id='email' value='$email' type='checkbox'></td><td>$last</td><td>$first</td><td>$grade</td><td>$status</td></tr>";
}
echo "</table>";
echo "<label><h2>Title</h2></label>
<input type='text' name='planTitle' id='planTitle' value='' required>
<label><h2>Content</h2></label>
<textarea name='planCont' id='planCont' cols='60' rows='10' required></textarea>
<input type='submit' name='submit' value='Create Plan'>
</form>";
答案 0 :(得分:1)
您的input
字段的ID应为email
,而不是$email
。
答案 1 :(得分:0)
感谢@Ed Cottrell和@putvande的帮助。我终于弄明白了。我试图允许用户发送HTML电子邮件。在我最初尝试的一次尝试中,我需要这个。
$_POST = array_map( 'stripslashes', $_POST );
//collect form data
extract($_POST);
但后来我改变了方向,所以我不再需要了。我把它删除了,现在一切正常。再次,谢谢你的时间。经过几个小时的搜索,我想是时候问了,但我想我应该等30多分钟。