Mail an mehrere Adressen verschicken
Martl
- php
0 Auge0 klawischnigg
Hallo Forum,
dieser Scriptausschnitt unter PHP 7.x auf einem Apache 2.x (genauer habe ich es momentan nicht)
...
$mailSubject = "Subject";
$mailMessage = "Text";
$mailHeaders = "Content-Type: text/plain; charset=utf-8";
for($i = 0; $i < count($mailingList); $i++){
$mailTo = $mailingList[$i];
mail($mailTo, $mailSubject, $mailMessage, $mailHeaders);
}
...
soll eine Mail an die Empfänger aus $mailingList
verschicken, was auch geschieht. Bei der Überprüfung des Ergebnisses habe ich aber festgestellt, daß alle Zieladressen in jeder Mail unter "To:" auftauchen. Sieht dann etwa so aus:
To: adresse_1@example.com adresse_2@example.com adresse_3@example.com ...
Ich hatte angenommen, daß für jeden Schleifendurchgang eine Mail mit jeweils einer Adresse erzeugt wird.
Kann mir jemand erklären, woran das liegt bzw. wo ich ansetzen müsste, um das Ziel "Eine Mail, eine Adresse" zu erreichen?
Grüße, Martl
Hallo
... $mailSubject = "Subject"; $mailMessage = "Text"; $mailHeaders = "Content-Type: text/plain; charset=utf-8"; for($i = 0; $i < count($mailingList); $i++){ $mailTo = $mailingList[$i]; mail($mailTo, $mailSubject, $mailMessage, $mailHeaders); } ...
soll eine Mail an die Empfänger aus
$mailingList
verschicken, was auch geschieht. Bei der Überprüfung des Ergebnisses habe ich aber festgestellt, daß alle Zieladressen in jeder Mail unter "To:" auftauchen. Sieht dann etwa so aus:To: adresse_1@example.com adresse_2@example.com adresse_3@example.com ...
Wenn da alle Adressen aufgelistet werden, musst du davon ausgehen, dass alle diese Adressen in $mailTo
stehen, musst du davon ausgehen, dass alle diese Adressen in $mailingList[$i]
stehen. Ansonsten sieht der Code für mich – abseits vom hier und da bestehenden Optimierungspotential – unverdächtig aus.
Hast du dir mal den Inhalt von $mailingList[$i]
ausgeben lassen? Nur, um dich zu vergewissern, dass dort das enthalten ist, was du erwartest. Zum Beispiel so:
echo '<pre>';
for($i = 0; $i < count($mailingList); $i++){
echo htmlspecialchars('Zeile #'. $i .': '. $mailingList[$i] ."\n");
//$mailTo = $mailingList[$i];
//mail($mailTo, $mailSubject, $mailMessage, $mailHeaders);
}
echo '</pre>';
Ich hatte angenommen, daß für jeden Schleifendurchgang eine Mail mit jeweils einer Adresse erzeugt wird.
Das sollte eigentlich so sein, falls $mailingList
ein eindimensionales Array mit E-Mail-Adressen ist.
Tschö, Auge
Hallo Auge,
guter Hinweis, werde dem mal nachgehen. Danke!
Grüße, Martl
Hallo Auge,
ja, das wars. Nochmals danke.
Grüße, Martl
Hi there,
dieser Scriptausschnitt unter PHP 7.x auf einem Apache 2.x (genauer habe ich es momentan nicht)
... $mailSubject = "Subject"; $mailMessage = "Text"; $mailHeaders = "Content-Type: text/plain; charset=utf-8"; for($i = 0; $i < count($mailingList); $i++){ $mailTo = $mailingList[$i]; mail($mailTo, $mailSubject, $mailMessage, $mailHeaders); } ...
soll eine Mail an die Empfänger aus
$mailingList
verschicken, was auch geschieht.
Hat mit Deinem Problem nicht ursächlich zu tun aber - Du solltest in die for-Schleife eine Pause einbauen - viele Mailserver mögen es überhaupt nicht, wenn sie mit Mailanforderungen ohne Zeitverzögerung bombardiert werden. Hängt natürlich auch von der Menge der Mails ab, bei ein paar zig-Mails ist es vermutlich eher egal, aber wenn's mehr werden, würd' ich jeweils so ca. eine halbe Sekunde warten...