E-mail an mehrere Benutzer versenden

alex130

Erfahrenes Mitglied
Hi
Ich wollte gerade mit einem Script eine E-Mail mit Anhang an mehrere Benutzer versenden, doch irgendwie funktioniert das nicht, könnt ihr mir bitte helfen?
Danke
Hier mein Code:
PHP:
<?php
if($_POST['submit'])
{

	$sql = mysql_query('SELECT * FROM `kunden`');
	
	while($kunde = mysql_fetch_object($sql)) 
	{
		$pfad= "anhaenge/anhang1.pdf";

		$anhang = array();
		$anhang["name"] = basename($pfad);
		$anhang["size"] = filesize($pfad);
		$anhang["data"] = implode("",file($pfad));
		
		if(function_exists("mime_content_type"))
		   $anhang["type"] = mime_content_type($pfad);
		else
		   $anhang["type"] = "application/octet-stream";
		
		mail_att("".$kunde->email."","".$_POST['betreff']."","".nl2br($_POST['nachricht'])."",$anhang);
		echo "email: $kunde->email";

	}
}
else
{
	?>
		<form action="" method="post">
		<table width="500" border="0" align="center">
		  <tr>
			<td>An:</td>
			<td>Alle</td>
		  </tr>
		  <tr>
			<td>Betreff:</td>
			<td><input type="text" name="betreff" size="30"></td>
		  </tr>
		  <tr>
			<td>Text:</td>
			<td><textarea name="nachricht" cols="45" rows="5"></textarea></td>
		  </tr>
		  <tr>
			<td>Anhang:</td>
			<td><input type="text" name="anhang" size="25"></td>
		  </tr>
		  <tr>
			<td></td>
			<td><input type="submit" name="submit" value="versenden"></td>
		  </tr>
		</table>
		</form>
	<?php
}
?>
 
Hi
Die Funktion hab ich auf Google gefunden, das mit dem Anhang klappt auch nicht ganz, denn der Anhang wird ausgelesen...
Hier der Code:
PHP:
/* EMAIL FUNCTION */
		$pfad= "anhaenge/anhang1.pdf";

		$anhang = array();
		$anhang["name"] = basename($pfad);
		$anhang["size"] = filesize($pfad);
		$anhang["data"] = implode("",file($pfad));
		
function mail_att($to,$subject,$message,$anhang)
		   {
		   $absender = "Sportloewe";
		   $absender_mail = "alexander.bischof@beinside.at";
		   $reply = "alexander.bischof@beinside.at";
		
		   $mime_boundary = "-----=" . md5(uniqid(mt_rand(), 1));
		
		   $header  ="From:".$absender."<".$absender_mail.">\n";
		   $header .= "Reply-To: ".$reply."\n";
		
		   $header.= "MIME-Version: 1.0\r\n";
		   $header.= "Content-Type: multipart/mixed;\r\n";
		   $header.= " boundary=\"".$mime_boundary."\"\r\n";
		
		   $content = "This is a multi-part message in MIME format.\r\n\r\n";
		   $content.= "--".$mime_boundary."\r\n";
		   $content.= "Content-Type: text/html charset=\"iso-8859-1\"\r\n";
		   $content.= "Content-Transfer-Encoding: 8bit\r\n\r\n";
		   $content.= $message."\r\n";
		
		   //$anhang ist ein Mehrdimensionals Array
		   //$anhang enthält mehrere Dateien
		   if(is_array($anhang) AND is_array(current($anhang)))
			  {
			  foreach($anhang AS $dat)
				 {
				 $data = chunk_split(base64_encode($dat['data']));
				 $content.= "--".$mime_boundary."\r\n";
				 $content.= "Content-Disposition: attachment;\r\n";
				 $content.= "\tfilename=\"".$dat['name']."\";\r\n";
				 $content.= "Content-Length: .".$dat['size'].";\r\n";
				 $content.= "Content-Type: ".$dat['type']."; name=\"".$dat['name']."\"\r\n";
				 $content.= "Content-Transfer-Encoding: base64\r\n\r\n";
				 $content.= $data."\r\n";
				 }
			  $content .= "--".$mime_boundary."--"; 
			  }
		   else //Nur 1 Datei als Anhang
			  {
			  $data = chunk_split(base64_encode($anhang['data']));
			  $content.= "--".$mime_boundary."\r\n";
			  $content.= "Content-Disposition: attachment;\r\n";
			  $content.= "\tfilename=\"".$anhang['name']."\";\r\n";
			  $content.= "Content-Length: .".$dat['size'].";\r\n";
			  $content.= "Content-Type: ".$anhang['type']."; name=\"".$anhang['name']."\"\r\n";
			  $content.= "Content-Transfer-Encoding: base64\r\n\r\n";
			  $content.= $data."\r\n";
			  } 
			  
			
		   
		
		   if(@mail($to, $subject, $content, $header)) return true;
		   else return false;
		   }	
/* EMAIL FUNCTION ENDE */
 
Hi,

das mit dem Anhang klappt auch nicht ganz, denn der Anhang wird ausgelesen...

Wie meinen...? :confused:

Hast Du die Funktion mal mit nur einer Adresse getestet?
Lass Dir am besten mal die Variablen in der Funktion ausgeben, was da denn so zusammengewurstelt wird. Und den Rückgabewert abzufragen, wäre auch noch sinnvoll, vielleicht wird die Email gar nicht erst für den Versand akzeptiert.
Spontan fällt mir auf, dass in der Funktion noch ein $dat['size'] statt $anhang['size'] steht (bei nur einem Anhang).

LG
 
Zurück