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?
Vous pouvez utiliser ClearAllRecipients ()
$mailer->ClearAllRecipients( ); // clear all
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