php foreach复选框选中添加到$ emailto

时间:2013-11-04 21:41:04

标签: php email post foreach

我的表单需要有多个电子邮件地址。我有一个包含复选框的表单。每个选中的复选框都应添加到电子邮件的接收列表的位置。数据正确传递,我知道这是因为如果我在新页面上回显它,它将正确显示每个值。我正在使用$_POST

要追加的变量称为$email_to 它会被发送到:@mail($email_to, $email_subject, $email_message, $headers);

使用静态$email_to值,表单可正常运行并通过电子邮件发送数据。

到目前为止,我已经尝试过了  foreach($_POST['rep'] as $rep_num) { $emailto = $rep_num;}
 foreach($_POST['rep'] as $rep_num[]) { $emailto = $rep_num[];}

我认为foreach缺少某些东西,但我无法弄清楚是什么。它可以很好地回应它,但不能将它存储在变量中。任何人都可以指出我需要的方向吗?

HTML

<div class="clearfix email_boxes">
        <input type="checkbox" name="rep[]" value="02@address.com,">Lorem Ipsum 01
        <input type="checkbox" name="rep[]" value="02@address.com,">Lorem Ipsum 02
        <input type="checkbox" name="rep[]" value="03@address.com,">Lorem Ipsum 03
</div>

4 个答案:

答案 0 :(得分:2)

您需要使用array_push或简写方括号[]将项目添加到数组中。

例如

$emails = array();
foreach($_POST['rep'] as $email) {
   // Each $email is added as the next array entry, using [] 
   $emails[] = $email; 
}

// Convert the array to a comma separated string
$recipients = implode(',', $emails);

mail($recipients, $subject, $message);

答案 1 :(得分:1)

略微修改你已经拥有的东西:

欢迎您使用它。 (预测试-)

<?php

if(isset($_POST['submit'])){

$email = "yourEmail@example.com";
$email_subject = "Subject here";
$email_message = "The message";

$headers = "From: $email" . "\r\n" .
"Reply-To: $email" . "\r\n" .
"X-Mailer: PHP/" . phpversion();

foreach($_POST['rep'] as $to) {
mail($to, $email_subject, $email_message, $headers);
}

} // ending brace for if(isset($_POST['submit']))

?>

<form method="post" action="">

<div class="clearfix email_boxes">
<input type="checkbox" name="rep[]" value="email_1@example.com">Lorem Ipsum 01
<input type="checkbox" name="rep[]" value="email_2@example.com">Lorem Ipsum 02
<input type="checkbox" name="rep[]" value="email_3@example.com">Lorem Ipsum 03
</div>

<input type="submit" name="submit" value="Send Email to Users">

</form>

答案 2 :(得分:0)

foreach($_POST['rep'] as $rep_num) { $emailto = $rep_num;} 

在这里,您将所有电子邮件放入$ emailto变量中。因此,每次循环运行时,擦除旧循环并保存新循环。所以最后你得到的是最后一个电子邮件地址。

因此,您可以使用数组来保存电子邮件地址。然后逐个发送电子邮件。您可以在循环中使用计数器来检查循环运行的次数,然后您可以将该计数器用作发送电子邮件的循环计数器。

答案 3 :(得分:0)

试试这个:

foreach($_POST['rep'] as $key => $rep_num) {
     $emailto = $rep_num;
}

ATT。