web-dev-qa-db-fra.com

PHPMailer AddAddress ()

Je ne sais pas comment les données devraient être formatées pour la fonction AddAddress PHPMailer; J'ai besoin que l'e-mail soit envoyé à plusieurs destinataires alors j'ai essayé 

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

mais sans succès. Toute aide serait appréciée. 

32
kmunky

Vous devez appeler la fonction AddAddress une fois pour chaque adresse e-mail à laquelle vous souhaitez envoyer. Il n'y a que deux arguments pour cette fonction: recipient_email_address et recipient_name. Le nom du destinataire est facultatif et ne sera pas utilisé s'il n'est pas présent. 

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

Vous pouvez utiliser un tableau pour stocker les destinataires, puis utiliser une boucle for. J'espère que ça aide. 

64
doamnaT

Vous devez appeler la méthode AddAddress une fois pour chaque destinataire. Ainsi:

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

Pour rendre les choses faciles, vous devez parcourir un tableau pour le faire.

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

Mieux encore, ajoutez-les en tant que destinataires en copie conforme.

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

Pour rendre les choses faciles, vous devez parcourir un tableau pour le faire.

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

Quelques bonnes réponses ci-dessus, en utilisant ces informations, voici ce que j'ai fait aujourd'hui pour résoudre le même problème: 

$to_array = explode(',', $to);
foreach($to_array as $address)
{
    $mail->addAddress($address, 'Web Enquiry');
}
4
Purple Tentacle
foreach ($all_address as $aa) {
    $mail->AddAddress($aa); 
}
3
user2720626

Toutes les réponses sont géniales. Voici un exemple de cas d'utilisation de plusieurs adresses d'ajout: Possibilité d'ajouter autant de courriels que vous le souhaitez à la demande avec un formulaire Web:

Voir en action avec jsfiddle ici (Sauf le processeur 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);}
    }
} 
?>

Il s’agit donc de générer une nouvelle zone de texte de saisie à chaque clic avec le nom "emails []".

Le [] ajouté à la fin en fait un tableau lors de la publication.

Ensuite, nous examinons chaque élément du tableau avec "foreach" du côté PHP en ajoutant le:

    $mailer->AddAddress($postEmail);
0
Tarik