web-dev-qa-db-fra.com

phpMailer - Comment supprimer des destinataires

Il y a beaucoup de questions sur StackOverflow sur ce sujet, mais je n'ai pas pu en trouver une qui a pu résoudre le problème que j'ai. Le script que j'écris envoie plusieurs e-mails à différents destinataires avec différents contenus de message.

Je peux obtenir cela en réinitialisant l'objet phpMailer plusieurs fois, mais ce que j'aimerais pouvoir faire, c'est créer l'objet une seule fois, puis réattribuer les champs suivants:

$mail->AddAddress($email);
$mail->Subject = $subject;
$mail->IsHTML(false);
$mail->Body = $message;

De cette façon, je peux simplement exécuter ces quatre lignes de code, puis envoyer le courrier, encore et encore, autant de fois que nécessaire. Les champs Subject, IsHTML et Body sont facilement modifiés, donc le problème que j'ai est dans la fonction AddAddress.

Comme vous pouvez probablement le deviner, après avoir envoyé le premier e-mail, la modification des destinataires des futurs e-mails entraînera leur empilement sur la liste actuelle des destinataires.

Pour faire simple, comment puis-je supprimer les adresses e-mail associées à mon $mail objet pour que je puisse les assigner à chaque fois en supprimant les anciennes adresses?

Y a-t-il une autre fonction en plus de AddAddress que je peux utiliser qui assignera juste les adresses?

46
Joe Majewski

Vous pouvez utiliser ClearAllRecipients ()

$mailer->ClearAllRecipients( ); // clear all

95
GDP

je l'utilise toujours avant d'envoyer un e-mail aux destinataires:

// clear addresses of all types
$mail->ClearAddresses();  // each AddAddress add to list
$mail->ClearCCs();
$mail->ClearBCCs();

alors je fais juste ceci: (sans utiliser CC ou BCC, $ toaddress est juste un tableau de destinataires)

foreach($toaddress as $key=>$val) { $mail->AddAddress( $val ); }

im en utilisant PHPMailer 5.2

26
user1299518