Rundmail mit Variablen

Hallo,
ich möchte eine automatisch generierte Rundmail an verschiedene Mail-Adressen versenden. Die Mail soll aber noch individuelle Anteile aus einer Datenbank enthalten. Ich habe versucht einen Standardtext mit PHP-Variablen abzuspeichern und zu versenden aber das geht nicht. Die Variablen werden nicht aufgelöst.
Das ganze sieht dann z.B. so aus:

Hallo $Geschlecht $Name,
Dies ist eine automatisch generierte Mail.

Ich möchte vermeiden den gesammten Text durch Stringcat im PHP-Script manuell zusammenzusetzen. Kann man das irgendwie Parametergesteuert machen?

Hallo!

Du legst eine Datenbank an, mit „Name“, „Geschlecht“ und „Mailadresse“.
Diese Werte rufst du dann ab (mysql_connect, mysql_query…) in der die Daten stehen und machst dann mit einer „while“-Schleife die Mails klar.
Du benötigst also die Parameter, den Mailinhalt (einen Header am besten auch) und nutzt dann alles zusammen mit „sendmail“.
Hier eine Website dazu:
http://www.dynamicwebpages.de/50.tutorials.php?dwp_t…

Viele Grüße
André

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das man das so machen kann ist mir schon klar.
Aber ich wollte das manuelle Zusammensetzen des Mailtextes aus Datenbankvariablen und Text automatisieren. D.h. der Mailtext soll vollautomatisch zusammengesetzt werden. Wenn sich der Inhalt er Mail einmal ändert soll man nicht jedesmal das PHP-Script ändern müssen sondern nur die Vorlage in die dann automatisch die Variablen eingefügt werden.
Geht sowas?

Klar, dass geht auch.
Du kannst dir eine Eingabemaske bauen, die deine eben geschriebene Rundmail an ein Script übergibt und den Wert (als Beispiel) $mail erhält. Dann liest du die Datenbank aus (Name, Geschlecht, Mailadresse) und fügst unten die Variable $mail in einer while-Schleife an.
Somit wird aus der DB der Empfänger ausgelesen, Mail angehangen und solange gemacht, bis keine Mailadresse mehr da ist.
Du kannst die Mail natürlich auch in die DB speichern, wie du magst.
Oder du legst ein Textfile an mit dem Mailinhalt und änderst nur immer im Textfile die Nachricht an die User. Das Testfile liest du dann aus und hast es als Variable vorliegen ($mail).

Das Script an sich muss NIE angepasst werden, nur der Inhalt der Variablen ist somit anders.

Viele Grüße
André

P.S.: Wenn es nicht klappen sollte, schicke mir eine Mail und ich mache dir ein Beispiel fertig.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Anhang…
Kleines Beispiel:
Datenbank einlesen, Emailadressen $email zuweisen:
$dateiname = „mailtext.txt“; //File mit Mailtext
$array = file($dateiname); // Datei in ein Array einlesen
foreach($array as $mailtext); //
foreach($emails_in_array as $email) {
mail($email,„hier kommt die Überschrift rein ($mailtext)“,„Hier kann der Text rein (oder auch eine Variabel wie $email vorne)“,„from:[email protected](oder Variabel\r\n“);
}

Wenn du Variabeln benutzt ($email, $mailtext…), dann darf oben hinter mail(… natürlich kein " " vorkommen.

Hoffe es klappt, habe es eben hier auf der Arbeit zusammengeschustert ohne zu testen.

Viele Grüße
André

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hier ist es ziemlich gut erklärt:
http://www.infos24.de/phpe/handbuch/23_php_mail.htm

Viele Grüße
André

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Andre,
es hat leider noch nicht geklappt. Ich hab mal ein vereinfachtes Beispiel gemacht:

  1. Ich habe bei meinem Hoster eine Datei „Mailtext.txt“ hinterlegt. Diese Datei hat folgenden Inhalt:

Hallo $Geschlecht $Name,
Dies ist ein Test.

  1. Mein PHP-Script sieht wie folgt aus:

$Geschlecht=„Herr“;
$Name=„Maier“;
$Mail=„meine Mail-Adresse“;

$Datei=fopen(„Mailtext.txt“,„r“);
$Nachricht="";
while(!feof($Datei)){
$Nachricht.=fgets($Datei,1024);
}
fclose($Date);

if(mail($Mail, „Das ist ein Test“, $Nachricht, „From: Absende Mail“)){
echo "
Es hat geklapt
";
}
else{
echo "
Es gab einen Sendefehler!
";
}

  1. Die Mail kommt bei mir wie folgt an:

Hallo $Geschlecht $Name,
Dies ist ein Test.

  1. Ich möchte aber das folgendes ankommt:

Hallo Herr Maier,
Dies ist ein Test.

Gruss soso

Hallo soso!

if(mail($Mail, „Das ist ein Test“, $Nachricht, „From: Absende Mail“)){

Eventuell etwas umständlich, sollte aber (hoffentlich) funktionieren:
if(mail($Mail, „Das ist ein Test“, „Hallo $Geschlecht $Name,\n $Nachricht“, „From: Absende Mail“)){

Wenn durch das \n kein Zeilenumbruch zustande kommt, teste es mit \r\n.
Ansonsten sollte das so eigentlich klappen.

Viele Grüße
André

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Problem gelöst
Hallo Andre,
Genau das wollte ich vemeiden. Denn damit muss ich ja jedesmal das PHP-Script verändern wenn ich den Mailtext ändere.
Aber das Problem ist inzwischen gelöst. Wenn ich ein

eval("$Nachricht="$Nachricht";");

vor dem senden der Mail einfüge klappt es.
Danke

Hallo soso!

if(mail($Mail, „Das ist ein Test“, $Nachricht, „From: Absende
Mail“)){

Eventuell etwas umständlich, sollte aber (hoffentlich)
funktionieren:
if(mail($Mail, „Das ist ein Test“, „Hallo $Geschlecht $Name,\n
$Nachricht“, „From: Absende Mail“)){

Wenn durch das \n kein Zeilenumbruch zustande kommt, teste es
mit \r\n.
Ansonsten sollte das so eigentlich klappen.

Viele Grüße
André

Gut, dass du es gelöst hast, doch das Script hättest du nicht ändern müssen, nur das Textfile ($mailtext).
Aber hat ja geklappt :wink:

Viele Grüße
André

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]