Ich sende E-Mails mit einem Online-Formular über phpmailer und versuchen, eine für jede Schleife zu verwenden, um den Körper speziell für eine Schaltfläche zum Abbestellen anzupassen. Ich verwende derzeit nur zwei meiner persönlichen E-Mails ohne Verschlüsselung für Testzwecke. Ich werde die Verschlüsselung hinzufügen, sobald dies tatsächlich so funktioniert, wie es sollte.phpmailer für jede Schleife benutzerdefinierten Körper
Mein PHP-Code:
$mail = new PHPMailer;
/*php mailer settings*/
//All settings for php mailer here - working fine, email sends
/*for each loop to send bcc to each email and customize body*/
//array of emails - really loading from database with while loop
$subs_email("[email protected]","[email protected]");
foreach ($subs_email as $email) {
$mail->addBCC($email);
$mail->Body = '<p>This is the body text</p><a href="http://www.website.com/unsubscribe.php?email='.$email.'">Unsubscribe</a>';
}
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
eine Änderung des Codes über die E-Mail verwenden sendet (bcc) an die beiden E-Mails im Array aber alle E-Mails wird die gleiche Abmelde-Link/E-Mail-Adresse. Hinweis email1 @ wird beide Male verwendet.
Email an E-Mail-Adresse 1: Textkörper sieht gut aus.
<a href="http://www.website.com/[email protected]">Unsubscribe</a>
E-Mail an E-Mail-Adresse 2: Body text sieht gut aus.
<a href="http://www.website.com/[email protected]">Unsubscribe</a>
Das ist offensichtlich nicht das, was ich will. Wenn ich Tests teste und einfach den Text für jede Schleife auf einer leeren Seite ausspreche, wird jeder benutzerdefinierte Abmeldungslink für jede E-Mail-Adresse angezeigt.
Jede Hilfe wird geschätzt, und lassen Sie mich wissen, ob Sie mehr benötigen oder.
Arbeits Code erstellt basierend auf Antwort Haupt Problem wurde mit addBcc statt addAddress
foreach ($subs_email as $email) {
$mail->addAddress($email);
$mail->Body = '<p>This is the body text</p><a href="http://www.website.com/unsubscribe.php?email='.$email.'">Unsubscribe</a>';
if (!$mail->send()) {
echo "Mailer Error" . $mail->ErrorInfo . '<br />';
break; //Abandon sending
}
// Clear all addresses and attachments for next loop
$mail->clearAddresses();
}
also .. senden Sie die Mail innerhalb der foreach-Schleife oder nach? denn wenn Sie es nachher senden, werden Ihr Körper und der Link entsprechend der letzten wiederholten E-Mail gesetzt. Wenn Sie es innerhalb der foreach-Schleife senden, muss es etwas anderes geben, das Sie nicht freigegeben haben, das den Fehler verursacht – Cashbee
@Cashbee Es sendet nach. Also macht dein Kommentar Sinn. Ich habe es gerade noch einmal mit der send() in der Schleife versucht, aber jetzt bekommt jede Adresse zwei E-Mails, eine mit dem richtigen E-Mail-Adresse-Link und eine mit der anderen ... Ich habe meinen Code auf das aktualisiert, was ich ursprünglich gemacht habe. –