2014-01-25 2 views
0

В настоящее время я пытаюсь создать форму, чтобы люди могли выбрать несколько флажков с каждым, соответствующим человеку и адресу электронной почты. Затем они могут заполнить остальную часть формы и отправить электронное письмо всем, кого они выбрали. Это код, который у меня есть до сих пор, и он, похоже, не работает. Любые подсказки и идеи было бы здоровоphp email: множественные осадители с использованием флажков

Форма

<form action="mail.php" method="post" name="contact_form"> 
<input type="checkbox" name="emails" value="name1" id="thing"/><label for="thing" class="name1"></label> 
<input type="checkbox" name="emails" value="name2" id="thing2"/><label for="thing2" class="name2"></label> 
<input type="checkbox" name="emails" value="name3" id="thing3"/><label for="thing3" class="name3"></label> 
<input type="checkbox" name="emails" value="name4" id="thing4"/><label for="thing4" class="name4"></label> 
<input type="checkbox" name="emails" value="name5" id="thing5"/><label for="thing5" class="name5"></label> 
<input type="checkbox" name="emails" value="name6" id="thing6"/><label for="thing6" class="name6"></label> 
<input type="checkbox" name="emails" value="name7" id="thing7"/><label for="thing7" class="name7"></label> 
<input type="checkbox" name="emails" value="name8" id="thing8"/><label for="thing8" class="name8"></label> 
<input type="checkbox" name="emails" value="name9" id="thing9"/><label for="thing9" class="name9"></label> 
<div class="title_bar">Name</div> 
<input type="text" name="name" placeholder="John Urbanist" required/> 
<div class="title_bar">Email</div> 
<input type="email" name="from_email" placeholder="[email protected]" required/> 
<div class="title_bar" style="height:202px;">Additional Comments</div><textarea name="additional" maxlength="300" required></textarea> 
<div style="clear:both;display:block;"></div> 
<button class="buttonsend submit" type="submit">Send Letter</button> 
</form> 

Mail.php

$mails = array(
'[email protected]' => 'name1', 
'[email protected]' => 'name2', 
'[email protected]' => 'name3', 
'[email protected]' => 'name4', 
'[email protected]' => 'name5', 
'[email protected]' => 'name6', 
'[email protected]' => 'name7', 
'[email protected]' => 'name8', 
'[email protected]' => 'name9' 
); 
$name = $_REQUEST["name"]; 
$subject = 'Hello'; 
$additional = $_REQUEST["additional"]; 
$from_email = $_REQUEST["from_email"]; 
$headers = "From: ".$from_email."\r\n" . 
"X-Mailer: php"; 

foreach ($_POST['emails'] as $value) { 
if (in_array($value, $mails)) { 
$addrs = array_keys($mails, $value); 

foreach ($addrs as $addr) { 
if (mail($addr, $subject, $additional, $headers)) { 
echo("Message sent!"); 
} else { 
echo("Message delivery failed..."); 
} 
} 
} 
} 
+0

Какие ошибки вы получаете? – Rossco

+0

ничего его просто не отправляет –

+0

Вы пробовали класс почтовой программы php? http://phpmailer.worxware.com/ Сложность заключается в создании заголовков для всех клиентов. –

ответ

1

С PHP-почтовик http://phpmailer.worxware.com/ у вас есть много вариантов, чтобы установить, как

$userMail = new phpmailer; 
    $userMail->IsMail(); 
    $userMail->IsHTML(true); 
    $userMail->Priority = 3; 
    $userMail->CharSet = 'utf-8'; 
    //... 
    $userMail->From = '[email protected]'; 
    $userMail->FromName = SITE_OWNERS; 

    foreach($whatever as $key => $what) { 
     $userMail->AddAddress($key, $what); 
    } 
    //etc... 
    $userMail->WordWrap = 50; 
    //etc... 

И в конце

if($userMail->Send()){ 
    //do yes 
} else { 
    //do no 
} 

И что rossco сказал !!

2

Вам нужно добавить [] к названию флажков, чтобы он понимался как массив.

Форма

<form action="mail.php" method="post" name="contact_form"> 
    <input type="checkbox" name="emails[]" value="name1" id="thing"/><label for="thing" class="name1"></label> 
    <input type="checkbox" name="emails[]" value="name2" id="thing2"/><label for="thing2" class="name2"></label> 
    <input type="checkbox" name="emails[]" value="name3" id="thing3"/><label for="thing3" class="name3"></label> 
    <input type="checkbox" name="emails[]" value="name4" id="thing4"/><label for="thing4" class="name4"></label> 
    <input type="checkbox" name="emails[]" value="name5" id="thing5"/><label for="thing5" class="name5"></label> 
    <input type="checkbox" name="emails[]" value="name6" id="thing6"/><label for="thing6" class="name6"></label> 
    <input type="checkbox" name="emails[]" value="name7" id="thing7"/><label for="thing7" class="name7"></label> 
    <input type="checkbox" name="emails[]" value="name8" id="thing8"/><label for="thing8" class="name8"></label> 
    <input type="checkbox" name="emails[]" value="name9" id="thing9"/><label for="thing9" class="name9"></label> 
    <div class="title_bar">Name</div> 
    <input type="text" name="name" placeholder="John Urbanist" required/> 
    <div class="title_bar">Email</div> 
    <input type="email" name="from_email" placeholder="[email protected]" required/> 
    <div class="title_bar" style="height:202px;">Additional Comments</div><textarea name="additional" maxlength="300" required></textarea> 
    <div style="clear:both;display:block;"></div> 
    <button class="buttonsend submit" type="submit">Send Letter</button> 
    </form> 

mail.php

<?php 
    //print_r($_POST['emails']); 
    $mails = array(
    '[email protected]' => 'name1', 
    '[email protected]' => 'name2', 
    '[email protected]' => 'name3', 
    '[email protected]' => 'name4', 
    '[email protected]' => 'name5', 
    '[email protected]' => 'name6', 
    '[email protected]' => 'name7', 
    '[email protected]' => 'name8', 
    '[email protected]' => 'name9' 
    ); 
    $name = $_REQUEST["name"]; 
    $subject = 'Hello'; 
    $additional = $_REQUEST["additional"]; 
    $from_email = $_REQUEST["from_email"]; 
    $headers = "From: ".$from_email."\r\n" . 
    "X-Mailer: php"; 

    foreach ($_POST['emails'] as $value) { 
    if (in_array($value, $mails)) { 
    $addrs = array_keys($mails, $value); 

    foreach ($addrs as $addr) { 
    if (mail($addr, $subject, $additional, $headers)) { 
    echo("Message sent!"); 
    } else { 
    echo("Message delivery failed..."); 
    } 
    } 
    } 
    } ?> 
+0

Это работает для некоторых электронных писем, но не для других? вы знаете, почему это было бы? –

+1

, когда я запускаю его со всеми установленными флажками, все результирующие почтовые функции выполняются успешно. – Rossco

Смежные вопросы