# mehrere Emails verschicken



## Henselmania (10. November 2006)

Hallo liebe Community,  

ich habe ein Problem (ich glaube so fängt jeder Satz im Forum an  ).

Ich möchte aus einer MySql DB Email Adressen auslesen und an alle diese Adressen über ein Formular eine Nachricht schicken. 

Ich habe nur keine Idee wie ich das am besten mache

Für Hilfe wäre ich euch dankbar.....


----------



## g3radiochris (10. November 2006)

HeY!

Die einfachste Lösung wäre eine while- oder for-Schleife und darin die Mail-Funktion(http://de.php.net/manual/de/ref.mail.php).
Ich habe aber mal gelesen das diese Variante nicht grade die beste sein soll, aber ich denke wenn du keine 1000enden Mails damit verschickst reicht das völlig aus.

Danke und bis bald g3radiochris.


----------



## MiNiMaG (10. November 2006)

Eine weitere Möglichkeit ist das Eintragen aller Ampfänger als TO/CC/BCC mit der Mail-Funktion (siehe Vorposter).
Du solltest dir aber überlegen ob du wirklich willst, dass die Empfänger auch die anderen Empfänger sehen können (bei TO/CC)

Zur Variante meines Vorposters: 
Der ISP/Serveradmin kann evtl. ein Limit der zu versendenden Mails innerhalb eines bestimmten Zeitraums eingerichtet haben. (musst mal testen) Persönlich bevorzuge ich dennoch den Versand aus einer Schleife heraus


----------



## g3radiochris (10. November 2006)

MiNiMaG hat gesagt.:


> Zur Variante meines Vorposters:
> Der ISP/Serveradmin kann evtl. ein Limit der zu versendenden Mails innerhalb eines bestimmten Zeitraums eingerichtet haben. (musst mal testen) Persönlich bevorzuge ich dennoch den Versand aus einer Schleife heraus



Ich finde sie auch nutzenswert, ging bis jetzt auch immer gut auf dem eigenden Server.
Ich hatte mal vor ca. 1 1/2 einen Hoster da konnte ich 1000sende Mails innerhalb von Sekunden verschicken und das war ein Freehoster. 

Es gibt noch eine sehr schöne Lösung wie ich finde, doch leider hatte ich noch keine Zeit diese zu programmieren. Mal sehn vielleicht schreibe ich heute Abend gleich mal mein erstes Tutorial zu diesem Thema.

Danke und bis bald g3radiochris.


----------



## Henselmania (10. November 2006)

OK, danke.. 

Aber das ich das mit einer Schleife machen muss, war mir schon bekannt, mein Problem ist nur WIE ?


----------



## redX (10. November 2006)

Auf Google findest du massig an Tutorials für das was du brauchst.

z.B.
Datenbank auslesen: http://www.php-center.de/tutorial/teil4.htm
Email versenden: http://www.tutorialsuche.de/frame.php?id=1405

Am besten du versuchst dich mal selber. Wenn du nicht weiterkommst, dann komm doch einfach wieder 

MFG
X


----------



## Dr Dau (10. November 2006)

Hallo!

Also wenn schon an mehrere Empfänger gleichzeitig geschickt werden soll, dann bitte nur als BCC.
FROM: deine@adresse.de
TO: deine@adresse.de
BCC: andere@adresse.de, noch.eine@adresse.de
So sieht jeder Empfänger (ausser Dir) nur seine und Deine Adresse.
Somit dürfte die Datenschutzrechtliche Seite also geklärt sein (keine Weitergabe der Adressen).


			
				Henselmania hat gesagt.:
			
		

> mein Problem ist nur WIE ?


Was genau verstehst Du denn nicht?
Auf der von g3radiochris verlinken Referenzseite ist ein weiterführender Link zu der mail()-Funktion, auf der sich auch ein Beispiel befindet.
Weiterhin findest Du auch hier im Forum zahlreiche Beiträge die sich rund um den Mailversand via PHP befassen.
Du musst Dein Problem also schon "etwas" mehr konkretisieren..... oder jemanden im Jobforum damit beauftragen Dir Dein Script zu erstellen.

Gruss Dr Dau


----------



## MiNiMaG (10. November 2006)

An die Emailadressen kommst du ran, wenn du einen DB-Query machst und dann eine E-Mailadresse nach der anderen in der Schleife fetchst.


----------



## Descartes (10. November 2006)

Hallo!

Der Versand über BCC ist nur insofern problematisch, als das Emails die viele BCC Empfänger setzen, vermehrt als SPAM eingestuft werden.

Viele einzelne Mails mit dem Empfänger im To-Feld in einer Schleife versenden, wird ab einer bestimmten Anzahl das Timelimit von PHP (Standard 30 Sekunden) überschreiten.

Das könnte man aber dadurch umgehen, dass man 500 Emails versendet, und dann das Script mit header() sich selbst erneut aufrufen läßt (dabei wird das Timelimit zurückgesetzt) um die nächsten 500 zu verschicken.

Grüße

Martin


----------



## Schatti (21. November 2006)

Hi,

ich habe das selbe Problem! Die Emails habe ich nun aus der Datenbank ausgelesen, doch wie trenne ich sie nun mit einem "," so dass ich sie in dem to-Header einfügen kann?

so sollten die emails aufgelistet werden!

```
$to = 'email1@email.de, email2@email.de, email3@email.de';
```

hier lese ich die emails aus der db aus:

```
<?php
$server		           = "localhost";
$user		           = "user";
$password	        = "password";
$database		= "db";
mysql_connect($host, $username, $password)or die("Verbindung fehlgeschlagen");
mysql_select_db($database);

$result = mysql_query("SELECT email FROM testdb ");
		  while($abrufen=mysql_fetch_array($result)){
		   echo"$email";
		  }
?>
```

gruß
schatti


----------



## Dr Dau (21. November 2006)

```
$result = mysql_query("SELECT email FROM testdb "); 
          while($abrufen=mysql_fetch_array($result)){ 
           $email[] = $abrufen['email'];
          } 
$send_to = implode(",", $email);
```
So müsste es funktionieren..... $send_to setzt Du dann in die mail()-Funktion als Empfänger.

[edit]
Ähm, blödsinn..... nicht in der mail()-Funktion, sondern im Header bei CC und/oder BCC.
[/edit]


----------



## rythms (22. November 2006)

Bloss nicht bei CC.


----------



## Dr Dau (22. November 2006)

rythms hat gesagt.:


> Bloss nicht bei CC.


Aber auch nicht bei TO. 

Es kann allerdings auch Ausnahmen geben..... zb.b bei firmeninternen Rundschreiben (vorausgesetzt natürlich dass jeder Mitarbeiter/jede Abteilung Adressen ala mitarbeitername@firmendomain.de / abteilung@firmendomain.de hat).
Dann dürfte es wohl keine Rolle spielen wer welche Adressen sieht.


----------



## Schatti (22. November 2006)

d.h. so? 


```
$headerFields = array(
    'From'         => 'mail@mail.de',
    'BCC'         => '$send_to',
    'Mime-Version' => '1.0',
    'Content-Type' => 'text/html'
);
```


EDIT: bei mir funktioniert es so


----------

