我正在用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>";
您的
input
字段的ID应该是email
,而不是$email
。
感谢@Ed Cottrell和@putvande的帮助。我终于想通了。我试图允许用户发送HTML电子邮件。 在我最初的一次尝试中,我读到我需要这个。
$_POST = array_map( 'stripslashes', $_POST );
//collect form data
extract($_POST);
但后来我改变了方向,所以我不再需要它了。我删除了它,现在一切正常。再次感谢您抽出宝贵时间。 经过几个小时的搜索,我想是时候问了,但我想我应该再等30分钟。