Gruppenfilter beim E-Mailversand funktioniert nicht
Moderator: mirko
Ich habe schon HTML Code gesehen, wahnsinn. Aus dem Grund ist in älteren Versionen auch schon der Versand abgebrochen, weil die codierte E-Mail nicht mehr in den Speicher passte. Es ist eben auch nicht mit dem E-Mail-Text allein getan, die Regeln muss man auch noch betrachten und dann auch noch ganzen Absender-Adressdaten. Am Ende darf man nichts vergessen, sonst bleiben die Platzhalter in der E-Mail enthalten.
Das Parsen sollte doch nicht so lange dauern. Außerdem muss das nur einmal gemacht werden. Im Vergleich zu der Datenmenge, die umsonst übertagen wird, ist das auf den ersten Blick noch die performantere Lösung. Man müsste natürlich einen eigenen Parser schreiben, der nur einmal sequentiell durch die E-Mail geht, anstatt mehrere Suchanfragen über einen PHP-Befehl macht.
Marcus
Marcus
Ja ja ich weiss aber nicht vorher welche Felder in den E-Mails benutzt werden. Man müsste dazu den Betreff, E-Mail-Text und die Absenderdaten jedesmal erst parsen, die Felder damit raussuchen und dann die SQL-Anweisung zusammenbauen. Das Parsen dauert bei großen E-Mails im HTML-Format eine ganze Weile und die Zeit fehlt dann wieder beim Versand der E-Mails, denn die Scripte laufen ja nur eine begrenzte Zeit.
Nach dem * habe ich geschaut, ihn aber übersehen. Sinnvoller wäre es doch nur die Felder vom SQL-Server abzufragen, die man auch für diese E-Mail benötigt. Das wäre doch viel performanter. Auch die zu filternden Felder müssen ja nicht angezeigt werden. Bei großen Mailinglisten multilpiziert sich ja die Datenmenge enorm, die da vom SQL-Server durchgeschleift werden muss, vor allem wenn viele Felder benutzt sind.
Marcus
Marcus
Hallo Mirko,
hab\'s gefunden. Die nicht ausgewählten E-Mailadressen waren noch nicht bestätigt. Ich haber erst jetzt erkannt, dass die Adressen durch die halbgrauen Figuren gekennzeichnet sind. Das erklärt natürlich alles.
Wenn der MemberAge Link im E-Mail nicht verwendet wird, braucht man ihn ja nicht auszugeben. Ich denke nur an das immer zitierte Performanceproblem des Servers.
Marcus
hab\'s gefunden. Die nicht ausgewählten E-Mailadressen waren noch nicht bestätigt. Ich haber erst jetzt erkannt, dass die Adressen durch die halbgrauen Figuren gekennzeichnet sind. Das erklärt natürlich alles.
Wenn der MemberAge Link im E-Mail nicht verwendet wird, braucht man ihn ja nicht auszugeben. Ich denke nur an das immer zitierte Performanceproblem des Servers.
Marcus
Hallo Mirko,
noch\'n Problem: Ich habe noch eine Test-E-Mail verschickt und wieder 7 der 8 Gruppen ausgewählt. Vorher habe ich zu Testzwecken verschiedene E-Mails mit entsprechenden Gruppenzugehörigkeiten angelegt. So habe ich jeweils eine E-Mailadresse mit jeweils nur einer der 8 Gruppen angelegt. Eine Adresse mit allen 8, eine Adresse mit keiner und eine Adresse mit der ersten und letzten Gruppe. Ich wollte damit das Verhalten beim Klick auf den Abmeldelink in einer E-Mail testen. Soweit bin ich aber noch nicht gekommen.
Da ich ja die ersten 7 Gruppen für den E-Mailversand ausgewählt hatte, hätte SWM an 9 E-Mailadressen verschicken müssen. (7 mal jeweils eine Gruppe, einmal alle Gruppen und einmal die Adresse mit 1. und 8. Gruppe).
SWM hat aber nur an 5 E-Mails verschickt! Der Vergleich der Adressen hat gezeigt, dass der einzige Unterschied ist, dass in den Adressen, die nicht angeschrieben wurden im Sprachfeld \"EN\" steht. Die anderen Adressen haben dort keinen Eintrag. Ich habe aber keinen Filter gesetzt.
Ich habe mir darufhin das SQL-Statement anzeigen lassen. Hier ist keine Abfrage des Sprachfeldes sichtbar. :
Merkwürdig kam mir nur die Abfrage des MemberAges vor? Die wird doch überhaupt nicht gebraucht? Für was wird das gemacht?
Hier ist die Zusammenfassung des Mailings:
Marcus
noch\'n Problem: Ich habe noch eine Test-E-Mail verschickt und wieder 7 der 8 Gruppen ausgewählt. Vorher habe ich zu Testzwecken verschiedene E-Mails mit entsprechenden Gruppenzugehörigkeiten angelegt. So habe ich jeweils eine E-Mailadresse mit jeweils nur einer der 8 Gruppen angelegt. Eine Adresse mit allen 8, eine Adresse mit keiner und eine Adresse mit der ersten und letzten Gruppe. Ich wollte damit das Verhalten beim Klick auf den Abmeldelink in einer E-Mail testen. Soweit bin ich aber noch nicht gekommen.
Da ich ja die ersten 7 Gruppen für den E-Mailversand ausgewählt hatte, hätte SWM an 9 E-Mailadressen verschicken müssen. (7 mal jeweils eine Gruppe, einmal alle Gruppen und einmal die Adresse mit 1. und 8. Gruppe).
SWM hat aber nur an 5 E-Mails verschickt! Der Vergleich der Adressen hat gezeigt, dass der einzige Unterschied ist, dass in den Adressen, die nicht angeschrieben wurden im Sprachfeld \"EN\" steht. Die anderen Adressen haben dort keinen Eintrag. Ich habe aber keinen Filter gesetzt.
Ich habe mir darufhin das SQL-Statement anzeigen lassen. Hier ist keine Abfrage des Sprachfeldes sichtbar. :
Code: Alles auswählen
SELECT DISTINCT `tanzinfos_members`.`u_EMail`, `tanzinfos_members`.*, IF(`tanzinfos_members`.`u_Birthday` <> \'0000-00-00\', YEAR( CURRENT_DATE() ) - YEAR( `tanzinfos_members`.`u_Birthday`), 0) AS `MembersAge` FROM `tanzinfos_members`
LEFT JOIN `mailingadmin_globalblocklist` ON `mailingadmin_globalblocklist`.`u_EMail` = `tanzinfos_members`.`u_EMail`
LEFT JOIN `tanzinfos_localblocklist` ON `tanzinfos_localblocklist`.`u_EMail` = `tanzinfos_members`.`u_EMail`
LEFT JOIN `tanzinfos_maillisttogroups` ON `tanzinfos_members`.`id`=`tanzinfos_maillisttogroups`.`Member_id`
LEFT JOIN `testgroups_groups` ON `testgroups_groups`.`ml_groups_id`=`tanzinfos_maillisttogroups`.`groups_id`
WHERE (`tanzinfos_members`.`IsActive`=1 AND `tanzinfos_members`.`SubscriptionStatus`<>\'OptInConfirmationPending\')
AND (`mailingadmin_globalblocklist`.`u_EMail` IS NULL AND `tanzinfos_localblocklist`.`u_EMail` IS NULL)
AND (`testgroups_groups`.`ml_groups_id`=15 OR `testgroups_groups`.`ml_groups_id`=16 OR `testgroups_groups`.`ml_groups_id`=19 OR `testgroups_groups`.`ml_groups_id`=20 OR `testgroups_groups`.`ml_groups_id`=21 OR `testgroups_groups`.`ml_groups_id`=22 OR `testgroups_groups`.`ml_groups_id`=23)
Merkwürdig kam mir nur die Abfrage des MemberAges vor? Die wird doch überhaupt nicht gebraucht? Für was wird das gemacht?
Code: Alles auswählen
IF(`tanzinfos_members`.`u_Birthday` <> \'0000-00-00\', YEAR( CURRENT_DATE() ) - YEAR( `tanzinfos_members`.`u_Birthday`), 0) AS `MembersAge`
Hier ist die Zusammenfassung des Mailings:
Code: Alles auswählen
Name des E-Mailings test groups
Beschreibung
Zuletzt versendet 03.09.2010 13:09
Mailingliste World of Swing EN
Gruppen der Mailingliste SWINGKURSE; SWINGWV; RTSF; MBSW; SHOPEU; SHOPUS; VTIPPSM
Regeln für den E-Mail-Versand definiert nein
Anzahl E-Mail-Empfänger ca. 5
Statusreport an Ihre E-Mail-Adresse xxxxxxx senden ja
Statusreport an den Administrator der Mailingliste senden nein
Statusreport an alle zugewiesenen Nutzer der Mailingliste senden nein
Statusreport an angegebene E-Mail-Adresse senden nein
Versand des E-Mailings E-Mailing nach dem Klick auf "Fertig stellen" live im Browser versenden
Absender E-Mail-Adresse xxxxxxxx
Angezeigter Absender-Name
Antwort-E-Mail-Adresse (Reply-to)
E-Mail-Adresse für die Return-Path-Angabe
Versand des E-Mailings über xxxx SMTP
Anzahl E-Mails, die bei einer E-Mailing-Prüfung vorbereitet bzw. live versendet werden sollen 200
Twitter Tweat posten nein
Format der E-Mail multipart E-Mail
Codierung der E-Mail iso-8859-1
Priorität der E-Mail normale Priorität
Betreff der E-Mail Gruppentest
E-Mail-Texte ja, Reine Text-E-Mail 124 Byte, Reine HTML-E-Mail 358 Byte
Anhänge keine
Anonymes Tracking - Anzahl E-Mail-Öffnungen ja
Anonymes Tracking - Klicks auf Links nein
Personalisiertes Tracking - Anzahl E-Mail-Öffnungen nein
Personalisiertes Tracking - Klicks auf Links nein
Anzahl Links, die für das Tracking aktiviert sind 0