2009-11-20 22 views
30

No sé cómo deberían formatearse los datos para la función AddAddress PHPMailer; Necesito el envío de correo electrónico a varios destinatarios, así que tratéPHPMailer AddAddress()

$to = "[email protected],[email protected],[email protected]"; 
$obj->AddAddress($to); 

pero sin éxito. Cualquier ayuda será apreciada.

+0

PHPMailer puede ahora (mayo de 2015) manejar este tipo de cadena de dirección a través de una función de análisis. Ver [esta respuesta] (http://stackoverflow.com/a/30377848/333340) – Synchro

Respuesta

58

Debe llamar a la función AddAddress una vez por cada dirección de correo electrónico que desee enviar. Solo hay dos argumentos para esta función: recipient_email_address y recipient_name. El nombre del destinatario es opcional y no se usará si no está presente.

$mailer->AddAddress('[email protected]', 'First Name'); 
$mailer->AddAddress('[email protected]', 'Second Name'); 
$mailer->AddAddress('[email protected]', 'Third Name'); 

Se podría utilizar una matriz para almacenar los destinatarios y luego usar un bucle for. Espero que ayude.

+1

Aunque después del primer 'AddAddress()' tendría más sentido agregar los otros con 'AddCC()'. – doub1ejack

+4

No, eso no es lo mismo. – edditor

+1

Creo que la nueva versión de la misma es $ mailer-> addAddress ([email protected] ',' Name '); –

2
foreach ($all_address as $aa) { 
    $mail->AddAddress($aa); 
} 
+0

suponiendo que $ all_address es array – popas

9

Debe llamar al método AddAddress una vez para cada destinatario. Como tal:

$mail->AddAddress('[email protected]', 'Person One'); 
$mail->AddAddress('[email protected]', 'Person Two'); 
// .. 

Para facilitar las cosas, debe recorrer una matriz para hacer esto.

$recipients = array(
    '[email protected]' => 'Person One', 
    '[email protected]' => 'Person Two', 
    // .. 
); 
foreach($recipients as $email => $name) 
{ 
    $mail->AddAddress($email, $name); 
} 

Mejor aún, agréguelos como destinatarios de Carbon Copy.

$mail->AddCC('[email protected]', 'Person One'); 
$mail->AddCC('[email protected]', 'Person Two'); 
// .. 

Para facilitar las cosas, debe recorrer una matriz para hacer esto.

$recipients = array(
    '[email protected]' => 'Person One', 
    '[email protected]' => 'Person Two', 
    // .. 
); 
foreach($recipients as $email => $name) 
{ 
    $mail->AddCC($email, $name); 
} 
+1

Tengo que decir que sus versiones fáciles parecen innecesariamente más largas. – Marcel

+0

Esta es una copia de la respuesta de Alan Orozco aquí: http://stackoverflow.com/questions/3149452/php-mailer-multiple-address – redburn

3

Algunos grandes respuestas anteriores, el uso de esa información que aquí es lo que he hecho hoy para resolver el mismo problema:

$to_array = explode(',', $to); 
foreach($to_array as $address) 
{ 
    $mail->addAddress($address, 'Web Enquiry'); 
} 
0

Todas las respuestas son grandes. He aquí un caso de ejemplo el uso dirección de agregar múltiples: La capacidad de agregar tanto de correo electrónico que desee en la demanda con un formulario web:

See it in action with jsfiddle here (excepto el procesador php)

### Send unlimited email with a web form 
# Form for continuously adding e-mails: 
<button type="button" onclick="emailNext();">Click to Add Another Email.</button> 
<div id="addEmail"></div> 
<button type="submit">Send All Emails</button> 
# Script function: 
<script> 
function emailNext() { 
    var nextEmail, inside_where; 
    nextEmail = document.createElement('input'); 
    nextEmail.type = 'text'; 
    nextEmail.name = 'emails[]'; 
    nextEmail.className = 'class_for_styling'; 
    nextEmail.style.display = 'block'; 
    nextEmail.placeholder = 'Enter E-mail Here'; 
    inside_where = document.getElementById('addEmail'); 
    inside_where.appendChild(nextEmail); 
    return false; 
} 
</script> 
# PHP Data Processor: 
<?php 
// ... 
// Add the rest of your $mailer here... 
if ($_POST[emails]){ 
    foreach ($_POST[emails] AS $postEmail){ 
     if ($postEmail){$mailer->AddAddress($postEmail);} 
    } 
} 
?> 

Entonces, ¿qué se básicamente consiste en generar un nuevo cuadro de texto de entrada en cada clic con el nombre "correos electrónicos []".

El [] añadido al final lo convierte en una matriz cuando se publica.

A continuación, vamos a través de cada elemento de la matriz con "foreach" en el lado PHP añadiendo el:

$mailer->AddAddress($postEmail); 
Cuestiones relacionadas