две петли foreach для отправки электронной почты - PullRequest
1 голос
/ 12 марта 2012

Я пытаюсь взять две текстовые области с несколькими электронными письмами, одну с электронными письмами "от" и одну с электронными письмами "до". Объединяйте электронные письма построчно и отправляйте электронные письма соответственно.

Ex:

Список «Кому»:

        mike@gmail.com

        nick@hotmail.com

        adam@yahoo.com

Список "Из":

        ashley@gmail.com

        brittney@yahoo.com

        racheal@hotmail.com

Я хочу отправить электронное письмо по адресу:

   mike@gmail.com from ashley@gmail.com

   nick@hotmail.com from brittney@yahoo.com

   adam@yahoo.com from racheal@hotmail.com

Любая помощь будет принята с благодарностью. Спасибо заранее.

Ниже приведен скрипт, который я получил до сих пор, он отправляет несколько писем с одного письма.

 <?php
 if (isset($_POST['submit']))
 {

    // Execute this code if the submit button is pressed.
    $raw_email_account = $_POST['email_from'];
    $email = $_POST['email_to'];
    $sent = "";
    $invalid = "";

    //Separating each line to be read by foreach
    $list = explode("\n",$email);

    //Rendering the separeted data from each line
    foreach($list AS $data) {
                //Separating each line to be read by foreach
            $item = explode(":",$data);
            $mail_body = '<html><body>email here</body></html>';
                $subject = "subject here";
                $headers  = "From:".$raw_email_account."\r\n";
                $headers .= "Content-type: text/html\r\n";
                $to = $item[0];

                $mail_result = mail($to, $subject, $mail_body, $headers);

            if ($mail_result) {
               $valid++;
            } else {
                   // write into an error log if the mail function fails
                   $invalid++;
            }
    }

}
?>
<html>
<head>
</head>
<body>
<form action="email_sender.php" method="POST">
<div align="center">From Email Accounts: <textarea name="email_from" cols="100"    rows="60"></textarea></div><br />
<div align="center">To Email Accounts: <textarea name="email_to" cols="100" rows="60">        </textarea></div><br />
<div align="center"><input type="submit" name="submit"></div>
<br>
Valids: <?php echo $valid;?>
<br>
Invalids: <?php echo $invalid;?>
</body>
</html>

Ответы [ 3 ]

2 голосов
/ 12 марта 2012

Если массив по умолчанию, индексы будут совпадать. Таким образом, вы можете сделать что-то вроде этого.

$toList = array(..);
$fromList = array(...);

foreach($toList as $key => $value) {
    $toAddress = $value;
    $fromAddress = $fromList[$key]; 
    //..
    //.. Go on with you mail function
}
1 голос
/ 12 марта 2012

Добавить логику, которая обеспечивает одинаковое количество $email и $raw_email_account arrays перед циклом foreach.

$list = explode("\n",$email);
$list2 = explode("\n", $raw_email_account);

foreach($list AS $key=>$data) {
            ...
            $headers  = "From:".$list2[$key]."\r\n";
            ...
}
0 голосов
/ 12 марта 2012

Вы можете использовать array_combine () , чтобы легко решить эту проблему.

В этом случае вы сначала объединяете два массива, а затем перебираете получившийся массив для выполнения действия отправки электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...