E-Mail an mehrere Gruppen senden

qsrs

Erfahrenes Mitglied
Hallo,

ich möchte mit meinem Skript E-Mails an mehrere Benutzergruppen senden. Die Benutzer sind in einer Tabelle gespeichert, die Gruppen-ID steht in der Spalte "group_id". In einem Auswahlfeld ($dbnewsletters_group_members) können mehrere Gruppen selektiert werden, hier wird die ID der Gruppe übergeben, die dann in der User Tabelle in der Spalte "group_id" abgefragt wird. Leider funktioniert es noch nicht. Wenn ich nur eine Gruppe selektiere, wird die E-Mail nur an einen in dieser Gruppe gesendet, wenn ich mehrere Gruppen selektiere, wird die E-Mail mehrmals an den gleichen Benutzer gesendet. Ich würde mich über Hilfe sehr freuen. Hier noch der Code.

PHP:
   for ($i1 = 0; $i1 < count ($dbnewsletters_group_members); $i1++) {
    $sql_e1 = "SELECT * FROM `$dbtable3` WHERE `user_group` = '".$dbnewsletters_group_members[$i1]."'";
    $query_e1 = mysql_query ($sql_e1, $dbconnect);
    $array_e1[$i1] = mysql_fetch_array ($query_e1);
    }
   for ($i1 = 0; $i1 < count ($array_e1); $i1++) {
    mail ("".$array_e1[$i1][user_name]." <".$array_e1[$i1][user_email].">", $dbnewsletters_subject, $mail_content, $xtra_mail);
    }
 
Dazu fehlt mir der Ansatz. Ich würde auch gerne den Fehler im obigen Code verstehen. Kann mir dabei jemand helfen?
 
Probier mal Folgendes:
PHP:
foreach( $dbnewsletters_group_members as $group ) {
	$query = "SELECT `user_name`, `user_email` FROM `$dbtable3` WHERE `user_group` = '".$group."'";
	$result = mysql_query($query, $dbconnect);
	$mailboxes = array();
	while( $row = mysql_fetch_assoc($result) ) {
		$mailboxes[] = sprintf('"%s" <%s>', rawurlencode($row['user_name']), rawurlencode($row['user_email']);
	}
	if( count($mailboxes) ) {
		mail(implode(', ', $mailboxes), $dbnewsletters_subject, $mail_content, $xtra_mail);
	}
}
 
Danke für deine Antwort. Nun wird gar keine E-Mail versendet. Ich habe noch einen kleinen Fehler behoben und in folgender Zeile die schließende Klammer ergänzt:

PHP:
  $mailboxes[] = sprintf('"%s" <%s>', rawurlencode($row['user_name']), rawurlencode($row['user_email']));
Daran lag es aber nicht. Das Textfeld ist übrigens so benannt: $dbnewsletters_group_members[] Ich würde mich über Hilfe sehr freuen, denn ich komme hier wohl nicht weiter.
 
Versuchs mal mit dieser Funktion, die das absenden von E-Mails eigentlich IMMER ermöglicht:
Code:
function sendMsg($email)
{
   $headers .= "From: ".$email["name"]." <".$email["from"].">\n";
   $headers .= "Reply-To: ".$email["name"]." <".$email["from"].">\n";
   $headers .= "X-Sender: ".$email["name"]." <".$email["from"].">\n";
   $headers .= "X-Mailer: PHP\n";
   $headers .= "Return-Path: ".$email["name"]." <".$email["from"].">\n";
   $check = mail($email["address"], $email["subject"], $email["message"], $headers);
   return $check;
}
Wird gefüllt mit:
Code:
$email = array("from" => "email@absender.de", "name" => "Name des Absenders", "subject" => "Der Betreff", "address" => "Empfaenger Adresse", "message" => "Email Nachricht");
Und abgeschickt mit:
Code:
print sendMsg($email) ? 'Mail gesendet' : 'Fehler beim Versenden' ;

Die letzten beiden Blöcke in die foreach()-Schleife und passend abändern, dann müsste es funktionieren...
 
Zurück