PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Wie Newsletter Script mit Variablen schreiben?


Blade II
2007-04-25, 18:18:10
Hi

Im moment habe ich ein recht simples Newsletterscript.
Man kann sich bei dem Newsletter anmelden, es werden verschiedene Daten wie Email, Vorname, Name, etc. in eine MySQL DB eingetragen.

Bei dem eigentlichen E-Mail Versand wird an alle E-Mail Adressen der Newsletter per BCC versandt.

Nun möchte ich aber noch die restlichen Daten aus der MySQL DB wie den Namen auslesen, sodass ich dann Sachen wie Hallo %user% --> Hallo Testperson schreiben kann.

Wie mach ich das?

$sql = "SELECT
Email,
Vorname,
Name,
killcode
FROM
newsletter";

$result = mysql_query($sql) or die (mysql_error());

$array = array();

while ($row = mysql_fetch_assoc($result)) {

$array[] = $row['Email'];
}

$empfaenger = implode(',', $array);

$header .= 'From:' . $absender . "\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-type: text/html; charset=iso-8859-1\n";
$header .= 'Bcc: ' . $empfaenger . "\n";

$betreff = $_POST['betreff'];

$nachricht = $_POST['nachricht'];
$nachricht = str_replace('\"', '"', $nachricht);

mail ($reply, $betreff, $nachricht, $header);

creave
2007-04-25, 18:44:46
Du könntest in der while-Schleife statt dem normalen Array nen mehrdimensionales nehmen, sprich in den Unterarrays sind dann Email, Name usw. Kurz gesagt: für jeden User ein eigenes Array im ursprünglichen Array.

Schematisch:

while .... {

$array[] = array("email"=>$row['Email'],"vorname"=>$row['vorname'], "nachname"=>$row['nachname']); usw..

}



Nur so ne Idee..

Blade II
2007-04-25, 20:07:02
Das geht ja schlecht :D

Ich will es so schaffen, dass immer eine individuelle Mail abgeschickt wird.

Der Haupttext bleibt gleich, aber es müssen ja auch so sachen wie ein Deregestierungs-Code oder ein Gruß wie "Hallo $Benutzername" abgeschickt werden.

Wenn ich das jetzt alles in die while Schleife packe würde es gehen, nur überlastet das nicht den Server?

creave
2007-04-25, 20:59:53
Was ist daran anders als du es früher gemacht hast, außer dass das Array jetzt alle Informationen enthält?

Deinen dynamischen Text mit Hallo Benutzername kannst du doch trotzdem realisieren, wenn nicht in der while-Schelife dann halt extra danach. Die Arrays sind doch mit numerischem index anwählbar?

Oder hab ich dich falsch verstanden und du willst wissen wie du das Teil jetzt 500x verschickst (und wie willst du per mail() überhaupt verschicken wenn nicht mit Schleife?...geht nich anders, nimmt nur einen Parametersatz) Macht aber nichts, mail() ist so oder so ne schlechte Wahl für dein Vorhaben:

Anmerkung: Bitte beachten Sie, dass die mail()-Funktion nicht dazu geeignet ist, große Mengen von E-Mails in einer Schleife zu senden, da die Funktion für jede E-Mail ein SMTP-Socket öffnet und schließt, was nicht sehr effizient ist.

Um große Mengen von E-Mails zu senden, schauen Sie sich bitte die PEAR-Pakete » PEAR::Mail und » PEAR::Mail_Queue an.


http://de2.php.net/manual/de/function.mail.php

und

http://pear.php.net/package/Mail
http://pear.php.net/package/Mail_Queue


Grüße

Blade II
2007-04-26, 21:34:04
So, ich habe jetzt Pear endlich nach viel rumprobieren zum laufen gebracht. Leider ist meine Frage immer noch nicht 100% beantwortet :-(

1) Werden die Server bei einer while-Schleife und der php-mail() Funktion überlastet?
2) Werden die Server bei einer while-Schleife und der pear-send() Funktion überlastet?
3) Wenn ja, welche Alternativen gibt es?
4) Wenn nein, ist es dann ratsam mit der while Schleife immer eine neue, individuelle (auf den Benutzer abgestimmte) Mail abzuschicken?

Grüße

Blade II

Kinman
2007-04-26, 23:04:46
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=347600

mfg Kinman