2009-11-20 11 views
30

Non so come i dati debbano essere formattati per la funzione AddAddress PHPMailer; Ho bisogno che l'e-mail sia inviata a più destinatari, quindi ho provatoPHPMailer AddAddress()

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

ma senza successo. Qualsiasi aiuto sarà apprezzato.

+0

PHPMailer può ora (Maggio 2015) gestire questo tipo di stringa dell'indirizzo tramite una funzione di parsing. Vedi [questa risposta] (http://stackoverflow.com/a/30377848/333340) – Synchro

risposta

58

È necessario chiamare la funzione AddAddress una volta per ciascun indirizzo di posta elettronica a cui si desidera inviare. Ci sono solo due argomenti per questa funzione: recipient_email_address e recipient_name. Il nome del destinatario è facoltativo e non verrà utilizzato se non presente.

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

Si potrebbe utilizzare una matrice per memorizzare i destinatari e quindi utilizzare un ciclo for. Spero possa essere d'aiuto.

+1

Sebbene dopo il primo 'AddAddress()' avrebbe più senso aggiungere gli altri con 'AddCC()'. – doub1ejack

+4

No, non è la stessa cosa. – edditor

+1

Penso che la nuova versione di esso sia $ mailer-> addAddress ('[email protected] ',' Name '); –

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

partendo dal presupposto che $ all_address è array – popas

9

È necessario chiamare il metodo AddAddress una volta per ogni destinatario. In questo modo:

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

Per rendere le cose facili, si dovrebbe scorrere una serie di farlo.

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

Meglio ancora, aggiungerli come destinatari di Carbon Copy.

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

Per semplificare le operazioni, è necessario eseguire il ciclo di un array per eseguire questa operazione.

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

Devo dire che le tue versioni semplici sembrano inutilmente più lunghe. – Marcel

+0

Questa è una copia della risposta di Alan Orozco qui: http://stackoverflow.com/questions/3149452/php-mailer-multiple-address – redburn

3

Alcuni grandi risposte di cui sopra, utilizzando tale informazioni qui è quello che ho fatto oggi per risolvere lo stesso problema:

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

Tutte le risposte sono grandi. Ecco un esempio di caso di utilizzo per i molteplici indirizzo aggiuntivo: La possibilità di aggiungere come molti email che si desidera a richiesta con un modulo web:

See it in action with jsfiddle here (tranne il processore 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);} 
    } 
} 
?> 

Quindi quello che fondamentalmente è generare una nuova casella di testo di input su ogni clic con il nome "email []".

Il [] aggiunto alla fine lo rende un array quando inviato.

Poi passare attraverso ogni elemento della matrice con "foreach" a lato PHP aggiungendo il:

$mailer->AddAddress($postEmail);