Alte Sache - Newsletter; jedoch mit phpmailer

testarrow

Mitglied
Hallo,

ich weiß dass es schon tausende von thread über NEwsletterscripte gibt. Nur leider hab ich leider keinen gefunden in der man konkret min Problem behandelt.

Also ich habe den phpmailer, einfach aus dem grund CID's verwenden zu können.
Was ich machen will ist, dass die E-Mailadressen aus der Datenbank eines Forums gelesen werden sollen. Diese lasse ich auslesen und packe sie in ein multiple-select"-Formularfeld...
Es werden alle Adressen schön ausgelesen und aufgelistet. Hinter jede Adresse lass ich noch ein Semikolon hängen.

Soweit so gut.

Nur habe ich nich dran gedacht, dass bei dem phpmailer die Adressen mit AddAddress($empf); eingebunden werden.

$empf soll ja mein selection-feld liefern. Nur geht die E-Mail jeweils an die erste ausgewählte Adresse anstatt an alle.

Mein Code für das Forumular:

PHP:
<select name="empf" size="15" multiple>
	<?php
	 $connect=mysql_connect('localhost','xxx','xxx');
 	mysql_select_db('xxx'); 

	$sql_befehl="SELECT id,email FROM bs_profile ";
	$ergebnis=mysql_query($sql_befehl,$connect);
	while ($satz=mysql_fetch_row($ergebnis)) {
    
   echo '<option selected>',  $satz[1] ,';</option>' ; }  
   
	?>
	</select>

PHP:
$mail->AddAddress($empf);

die adressen werden dann alle $empf zugewiesen und stehen dann in AddAddress..
Was ich aber machen muss, damits funktioniert ist ja, dass bei jeder neuen Adresse eine neue Zweile mit AddAddress hinzukommt und die Variable $empf auch dementsprechend ist.
NUR WIE MACHE ICH DAS?

ich hoffe wir finden eine Lösung.

Ich danke schonmal im Vorraus.

greetz arrow
 
So,

Ich hab noch ein bisschen am Code gearbeitet.

nun sieht es so aus:

- Die E-Mailadressen werden von eine mysql-datenbank ausgelesen und in einem select-feld augfegelistet und anschließend als Array weitergegeben.

- Betreff und den Text für den Inhalt kann man in ein Textfeld eingeben.

- $i =0

- count ließt die Anzahl der Adressen im Array aus.

- dann kommt die while-Schleife.

Das ganze sieht so aus:

Formular:
PHP:
<form action="mail.php" method="post">

Betreff:<input name="betreff" type="text" class="promo"><br>
Empf&auml;nger:</span>

	<select name="empf[]" size="15" multiple>
	<?php
	 $connect=mysql_connect('localhost','d####','x######');
 	mysql_select_db('d#####'); 

	$sql_befehle="SELECT email FROM bs_profile";
	$ergebnis=mysql_query($sql_befehle,$connect);
	while ($satz=mysql_fetch_row($ergebnis)) {
    
   echo '<option value="', $satz[0] ,'" selected>',  $satz[0] ,'</option>' ; }  
   
	?>
	</select><br>
	
Text: <textarea  name="inhalt" rows="9" wrap="PHYSICAL" class="promo"></textarea><br>
<input type="submit" name="Submit" value="Senden" >
</form>
Ich hab jetzt mal alles andere (Tables usw.) rausgenommen.


In der selben Datei gehts weiter mit:

PHP:
<?

if ($Submit)
{   

// Pfad   
$pfad = ini_get("include_path");   

// Pfad erweitern   
$pfad .= ";./phpmailer";  

// Pfad setzen   
ini_set("include_path", $pfad);   

// Die Klasse einbinden   
require("class.phpmailer.php");   

// Das Objekt erzeugen   
$mail = new PHPMailer();   

// Language-Datei   
$mail->SetLanguage ("de", "./phpmailer/");   

// SMTP-Server   
$mail->IsSMTP();   

// SMTP-url
$mail->Host     = "smtp.hiphop-odenwald.de";   

// Authentifizierung ja nein? 
$mail->SMTPAuth = true;   

//Benutzername
$mail->Username = "m######";   

//Passwort   
$mail->Password = "q#####";   

//Absenderadresse   
$mail->From     = "123@123.xy";   

//Absendername  
$mail->FromName = "abc";   


// Betreff   
$mail->Subject  =  $betreff;   

// Wenn man eine HTML-Mail verschicken möchte   
$mail->IsHTML(true);   

$mail->AddEmbeddedImage("head.gif", "head", "head.gif");
$mail->AddEmbeddedImage("../board/themes/scriptsolution/images/table_border/top_left.gif", "top_left", "top_left.gif");
$mail->AddEmbeddedImage("../board/themes/scriptsolution/images/table_border/top.gif", "top", "top.gif");
$mail->AddEmbeddedImage("../board/themes/scriptsolution/images/table_border/top_right.gif", "top_right", "top_right.gif");
$mail->AddEmbeddedImage("../board/themes/scriptsolution/images/table_border/right.gif", "right", "right.gif");
$mail->AddEmbeddedImage("../board/themes/scriptsolution/images/table_border/left.gif", "left", "left.gif");
$mail->AddEmbeddedImage("../board/themes/scriptsolution/images/table_border/bottom.gif", "bottom", "bottom.gif");
$mail->AddEmbeddedImage("../board/themes/scriptsolution/images/table_border/bottom_right.gif", "bottom_right", "bottom_right.gif");
$mail->AddEmbeddedImage("back.gif", "back", "back.gif");

// Der Body   
$mail->Body = "$inhalt";

// kein-html
$mail->AltBody  =  "hmm....";   



// Die Empfängeradressen 


 	$i=0;
 	$adressenanzahl = count($empf);
 	while ( $i<$adressenanzahl )
	{
		 	$mail->AddAddress($empf[$i]);
			$i++;
      	
	  		if( ! $mail->Send())   
			{      
				echo "Fehler! <br>";      
				echo "Mailer Error: " . $mail->ErrorInfo;   
			}   

			else 
			{ 
				echo "Die Mail Nr. ", $i ," ist raus.<br>";
			}
	}
}
else ;

?>

Nun hab ich aber ein Problem.

Die While-Schleife nimmt die erste Adresse im Array und gibt AddAddress mit dieser Adresse aus und verschickt die Mail.
Und was jetzt passiert ist zwar logisch, aber das will ich ja nicht haben.

beim nächsten durchlauf der Schleife wird zusätlich die nächste Adresse mit AddAdress Ausgegeben und nun werden zwei Mail rausgeschickt. Das heißt, dass die erste Adresse nun zum zweiten Mal die Mail bekommt. Und wenn ich 100 leute in der Liste habe kriegt er diese dann 100 Mal und die restlichen Adressen immer eine Mail weniger.

Ich wollte das so regeln, dass immer eine Adresse mit AddAdress ausgegeben wird und dann die Mail rausgeschickt wird, damit jeder in der An: Zeile im Client seine eigene Adresse sieht und nicht die der andern.

anonsten hätte ich ja erst AddAdress mit den Mailadressen auflisten lassen und danach di Mail geschickt.

Also weiß einer wie ich das anstelle, dass bei jedem Durchlauf nur eine Zeile mit AddAdress ausgegeben wid?

Bitte helft mir :(....

Ich habe noch nich soooo große Erfahrungen mit PHP und mySql....

greetz
 
Zurück