PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Blindcopy Mails aus Script versenden


WhiteVelvet
2008-03-15, 11:53:11
Ich möchte einen Newsletter programmieren, die Mailadressen sollen dabei natürlich als BCC versendet werden, damit nicht jeder alle Adressen sehen kann. Aber irgendwie funktioniert das nur so halb, denn er zeigt in der Mail unter "An:" immer die erste Mailadresse die er aus der Datenbank gezogen hat, alle anderen sind wie gewünscht nicht sichtbar. Eigentlich sollte aber jeder nur seine eigene Adresse an dieser Stelle sehen. Code:


$header = "MIME-Version: 1.0". "\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$header .= "From: Newsletter <info@xyz.de>" . "\r\n";
$header .= "Bcc: ";

WHILE ($ds=mysql_fetch_array($erg))
{
$header.="<$ds[email]>, \r\n";
$count++;
}

$betreff="Newsletter XY";


Ich hab das alles vor fast 2 Jahren geschrieben, also weiß ich leider nicht mehr woher ich den Code-Schnippsel habe, das \r\n ist mir daher nicht ganz klar, ob das sein muss.

Was läuft da falsch? Hab sowas noch nie programmiert... Danke! :)

WhiteVelvet
2008-03-15, 11:55:45
Ach ich hasse sowas, wie gesagt, ist schon 2 Jahre her... hab dadrüber einen anderen Code-Schnippsel gefunden, der dafür verantwortlich war...

Thread bitte löschen, danke :)

Kinman
2008-03-15, 12:28:20
Trotzdem als kleiner Tipp: Die Adressen als BCC einfügen ist eine sehr schlechte Idee für Newsletter, da sowas sehr schnell als Spam erkannt werden kann.

mfg Kinman

Birdman
2008-03-15, 13:14:29
Da machst du viel besser einen loop über alle Adressen und verschickst einzelne Emails pro Empfänger. Sofern das nicht zig tausende sind kannst das sogar in einem Rutsch machen - sind es mehr dann würd ich eine Funktion einbauen die das automatisch in kleinere Blöcke aufteilt.

WhiteVelvet
2008-03-15, 14:02:14
Naja, es sind knapp 400 Adressen... ich probier mal so eine Loop...

Nochwas: Bekomme ich es irgendwie mit, wenn eine Adresse nicht existiert? Der andere Mailhoster müsste doch eine Errormail zurückschicken, aber an wen? An das Script? Das bekommt das dann nicht mehr mit hmmmm.

rotalever
2008-03-15, 15:33:03
Also von GMX bekomme ich immer eine Nachricht vom qmail-daemon zurück, wenn da was nicht ging. Es müsste also so eine Nachricht im Postfach landen.

WhiteVelvet
2008-03-15, 15:37:12
Stimmt, genauergesagt in meinem Spam-Postfach, da sindse :)

Kinman
2008-03-15, 15:37:59
Bau in dein Mail ein Bild ein, dass auf eine PHP Datei linkt und die ID der Adresse oder die Adresse selbst (base64_encoded) übermittelt. In dieser PHP Datei kannst Du dann zuerst auswerten, von welcher Adresse das Bild angefordert worden ist und anschließend leitest mittels header('location: '); auf die eigentliche Bilddatei weiter.
Dann weißt Du sogar, wer die Mail gelesen hat und wer nicht. Einzige ausnahme sind reine Textmail-Reader.

mfg Kinman

rotalever
2008-03-15, 21:52:39
Bau in dein Mail ein Bild ein, dass auf eine PHP Datei linkt und die ID der Adresse oder die Adresse selbst (base64_encoded) übermittelt. In dieser PHP Datei kannst Du dann zuerst auswerten, von welcher Adresse das Bild angefordert worden ist und anschließend leitest mittels header('location: '); auf die eigentliche Bilddatei weiter.
Dann weißt Du sogar, wer die Mail gelesen hat und wer nicht. Einzige ausnahme sind reine Textmail-Reader.
mfg Kinman

Das ist unzuverlässig, insbesondere wenn es darum geht dadurch zu verifizieren, ob eine Addresse noch existiert und auf dieser Basis zu löschen. Viele Benutzer verwenden schließlich Mail-Programme die die Bilder zunächst nicht anzeigen. Natürlich klickt der ein oder andere dann an, die Bilder anzuschauen, aber eben nicht jeder. Und nur deshalb dann die email aus dem Verteiler löschen? Fände ich als User eher schlecht.
Da man aber vom Mailserver der anderen Partei, wie schon gesagt, eine Benachrichtigung erhält, wenn die Mail nicht zugestellt werden konnte, kann man das doch ruhig nutzen.

Kinman
2008-03-16, 01:27:21
Wenn Du mir noch verrätst, wie man diese Nachricht autom. überprüfen kann, dann wäre ich dir sehr dankbar. Mittels IMAP kann ich bereits die E-Mails abrufen, nur richtig "lesen" kann ich sie noch nicht, da die Mails immer sehr unterschiedlich aufgebaut sind.

mfg Kinman

mbee
2008-03-18, 08:48:33
Das ist unzuverlässig, insbesondere wenn es darum geht dadurch zu verifizieren, ob eine Addresse noch existiert und auf dieser Basis zu löschen. Viele Benutzer verwenden schließlich Mail-Programme die die Bilder zunächst nicht anzeigen. Natürlich klickt der ein oder andere dann an, die Bilder anzuschauen, aber eben nicht jeder. Und nur deshalb dann die email aus dem Verteiler löschen? Fände ich als User eher schlecht.
Da man aber vom Mailserver der anderen Partei, wie schon gesagt, eine Benachrichtigung erhält, wenn die Mail nicht zugestellt werden konnte, kann man das doch ruhig nutzen.
Das ist nicht nur unzuverlässig, sondern auch der Stil mit dem man sogenannte "Bugs" in SPAM-Mails einbindet. Erhöht den Level bei Spamfiltern ungemein.
Der einzige "saubere" Weg ist, entsprechende Fehlermeldungen vom Mailserver oder die Bounce-Mails (respektive den Header davon) auszuwerten. Das ist natürlich nicht ganz unaufwändig.

Kinman
2008-03-18, 13:23:56
Naja, bei mir laufen alle Bilder im Mail zuerst durch ein PHP-Skript für die Größenanpassung. Somit sind die Bilddateiendungen immer .php.

mfg Kinman

Coda
2008-03-18, 14:07:15
Nicht gerade performant. Sowas sollte man vorberechnen.

mbee
2008-03-18, 20:15:25
Naja, bei mir laufen alle Bilder im Mail zuerst durch ein PHP-Skript für die Größenanpassung. Somit sind die Bilddateiendungen immer .php.

mfg Kinman

Und Du hattest noch keine Abonnenten, die sich beschwert haben, dass die E-Mails nicht ankommen? ;)
Wie bereits geschrieben sollte man eigentlich schon aus diesem Grund auf solche Geschichten beim serverseitigen E-Mail-Versand verzichten.