Zeilenumbruch im Platzhalter

Fragen und Tipps & Tricks zur Newsletter Software SuperMailer oder zum BirthdayMailer

Moderatoren: mirko, Wolfi

Antworten
Benutzeravatar
mirko
Beiträge: 22885
Registriert: 25.11.2001, 15:14
Wohnort: Leipzig
Kontaktdaten:

Re: Zeilenumbruch im Platzhalter

Beitrag von mirko »

Overtone69 hat geschrieben:Vielen Dank für deine schnelle Reaktion Mirco, und das am Sonntag,

ich denke, dass ich mit der Lösung mit den <br>´s im Textfeld zurande komme. Ich habe es gerade mit ca. 1500 Zeichen getestet. Das scheint noch zu funktionieren. Gibt es in diesem Textfeld gar keine Zeichenbegrenzung?
Nein, zumindest wirst du so viele Daten nicht angeben, so dass es nicht mehr funktioniert. Das Limit liegt bei 2 GByte an Daten für SuperMailer insgesamt.
Ich habe hier versucht die UTF-8-Linie einzusetzen (also diese hier: ▬▬▬▬▬). Diese erzeugt beim Einlesen und/oder beim Versenden die berüchtigte und gefürchtete Fragezeichenkette. Hast Du dafür eine Erklärung? Sollte generell UTF-8 im Supermailer vermieden werden?
Nein sollte man nicht verwenden. Von mir ungetestet, die Quelldatei muss UTF-8 codiert sein und SuperMailer muss die E-Mails mit UTF-8 Codierung versenden.
Nur noch rein interessehalber zur SQL-Abfrage: Was müsste ich in denn beispielsweise für den Platzhalter E-Mail-Adresse eingeben? Also mal richtig technisch:

SELECT Feld_xy from tabelle_mitarbeiter WHERE email = 'Platzhalter E-Mail-Adresse'

email ist in der Tabelle tabelle_mitarbeiter natürlich ohne Duplikate, bzw.könnte ich auch das Feld id in der Empfängerliste ergänzen und danach abfragen.
Man muss das Feld mit der E-Mail-Adresse in der SuperMailer-Empfängerliste anschauen, also wie es bezeichnet ist. Heißt das z.B. E-Mail-Adresse, dann muss man angeben

SELECT Feld_xy from tabelle_mitarbeiter WHERE email = '[E-Mail-Adresse]'

Für [E-Mail-Adresse] wird SuperMailer während des Versands oder in der Serienmailvorschau die E-Mail-Adresse jeweiligen Empfänger angeben, die SQL-Abfrage ausführen und das Ergebnis einfügen. Wichtig auch hier wieder die E-Mail-Codierung, enthält das Ergebnis Unicode-Zeichen, dann muss als E-Mail-Codierung auch UTF-8 eingestellt werden.

Ein weiteres kleines Problem habe ich noch bei den Feldern in der Empfängerliste:
Es gibt ein Feld Anrede und ein Feld Name.

Die Variablen in der E-Mail selbst habe ich wie folgt gesetzt:
[Anrede]LEERZEICHEN[Name],

text text ...

Anrede wird beim Auslesen anhand einer Geschlechterkennung als "Sehr geehrte Frau" bzw. "Sehr geehrter Herr" hinterlegt.
Da jedoch nicht alle Namen in der Tabelle auch über eine Geschlechterkennung verfügen oder auch Namen fehlen wird bei Nichtvorhandensein einer der Werte dann "Liebe Leser" erzeugt. Hier führt nun natürlich das LEERZEICHEN vor [Name] zu einem unnötigen Leerzeichen vor dem Komma, da ja das Feld [Name]leer ist. Ich habe dies jetzt testweise wie folgt gelöst, was jedoch nicht sehr elegant ist:
Das LEERZEICHEN vor [Name] habe ich im Layout entfernt und füge jetzt im Falle von "Sehr geehrte Frau" bzw. "Sehr geehrter Herr" ein &nbsp; zusätzlich ein, welches ich bei dem Fall "Liebe Leser" natürlich weg lasse. Hättest Du hier eine bessere Lösung/Idee?
Du musst die Abfragefunktionen, Menü Projekt - Abfragefunktionen verwenden und anhand der jeweiligen Bedingung die korrekten Platzhalter ausgeben lassen z.B.

WENN Name = leer (Feld leer lassen) GIB AUS
Liebe LeserIN

WENN Name <> leer (Feld leer lassen) GIB AUS
[Anrede] [Name],
Overtone69
Beiträge: 88
Registriert: 03.03.2010, 14:12

Re: Zeilenumbruch im Platzhalter

Beitrag von Overtone69 »

Vielen Dank für deine schnelle Reaktion Mirco, und das am Sonntag,

ich denke, dass ich mit der Lösung mit den <br>´s im Textfeld zurande komme. Ich habe es gerade mit ca. 1500 Zeichen getestet. Das scheint noch zu funktionieren. Gibt es in diesem Textfeld gar keine Zeichenbegrenzung?
Ich habe hier versucht die UTF-8-Linie einzusetzen (also diese hier: ▬▬▬▬▬). Diese erzeugt beim Einlesen und/oder beim Versenden die berüchtigte und gefürchtete Fragezeichenkette. Hast Du dafür eine Erklärung? Sollte generell UTF-8 im Supermailer vermieden werden?

Nur noch rein interessehalber zur SQL-Abfrage: Was müsste ich in denn beispielsweise für den Platzhalter E-Mail-Adresse eingeben? Also mal richtig technisch:

SELECT Feld_xy from tabelle_mitarbeiter WHERE email = 'Platzhalter E-Mail-Adresse'

email ist in der Tabelle tabelle_mitarbeiter natürlich ohne Duplikate, bzw.könnte ich auch das Feld id in der Empfängerliste ergänzen und danach abfragen.

Ein weiteres kleines Problem habe ich noch bei den Feldern in der Empfängerliste:
Es gibt ein Feld Anrede und ein Feld Name.

Die Variablen in der E-Mail selbst habe ich wie folgt gesetzt:
[Anrede]LEERZEICHEN[Name],

text text ...

Anrede wird beim Auslesen anhand einer Geschlechterkennung als "Sehr geehrte Frau" bzw. "Sehr geehrter Herr" hinterlegt.
Da jedoch nicht alle Namen in der Tabelle auch über eine Geschlechterkennung verfügen oder auch Namen fehlen wird bei Nichtvorhandensein einer der Werte dann "Liebe Leser" erzeugt. Hier führt nun natürlich das LEERZEICHEN vor [Name] zu einem unnötigen Leerzeichen vor dem Komma, da ja das Feld [Name]leer ist. Ich habe dies jetzt testweise wie folgt gelöst, was jedoch nicht sehr elegant ist:
Das LEERZEICHEN vor [Name] habe ich im Layout entfernt und füge jetzt im Falle von "Sehr geehrte Frau" bzw. "Sehr geehrter Herr" ein &nbsp; zusätzlich ein, welches ich bei dem Fall "Liebe Leser" natürlich weg lasse. Hättest Du hier eine bessere Lösung/Idee?
Benutzeravatar
mirko
Beiträge: 22885
Registriert: 25.11.2001, 15:14
Wohnort: Leipzig
Kontaktdaten:

Re: Zeilenumbruch im Platzhalter

Beitrag von mirko »

Overtone69 hat geschrieben:Ein direkter "Zeilenumbruch im Platzhalter" ist wohl nicht möglich, da hier nur ein Textfeld vorliegt, oder kann ich hier \n oder <br> einsetzen? Falls das ginge: Auf wie viele Zeichen bin ich hier bergrenzt?
Im Namen des Platzhalters darf es keinen Zeilenumbruch geben, im auszugebenden Text kann es Zeilenumbrüche geben, diese müssen aber als <br> angegeben werden, im Text-Format wird <br> automatisch in \r\n umgewandelt.
Die zweite Mglichkeit (die ich mir vorstellen könnte) wäre über ein dynamisches Textfeld. Wäre hier prinzipiell meine folgende grob verständlich geschriebene SQL-Abfrage möglich:

Falls ein Datensatz mit der E-Mail-Adresse test@test.de aus der Empfängerliste gefunden wird, dann setze den Inhalt aus dem Datensatzfeld XY in dieses dynamische Textfeld.
Falls ein Datensatz mit der E-Mail-Adresse test@test.de nicht in der Datenbank existiert, dann lasse das dynamische Textfeld leer.

Das Ganze soll letztendlich schlicht und einfach nur für die Lösung folgender Problematik dienen:
Wir versenden einen einzigen Newsletter an Kunden und Mitarbeiter. Nur die Mitarbeiter sollen zusätzliche Informationen erhalten, welche in der Mitarbeiter-Datenbank-Tabelle vorhanden sind. Gibt es für dieses Problem vielleicht auch eine ganz andere Lösung?
Das kann man per SQL-Abfrage machen, d.h. den Text ausgeben lassen, falls die Bedingung zutrifft und halt keinen Text, falls diese nicht zutrifft. Alternativ in der Empfängerliste gibt es ein Kennzeichenfeld für Mitarbeiter und Kunde, dann kann man auch einen normalen Textbaustein verwenden und eine Bedingung z.B. WENN Mitarbeiter = 1 DANN <text für den mitarbeiter>
Und so nebenbei: Um welchen Faktor verzögert sich der Versand bei umfangreichen Datenbank-Abfragen bei jeder einzelnen E-Mail?
Kann ich nicht beantworten, hängt von der Geschwindigkeit des Rechners und der Reaktion der Datenbank ab, allgemein ist von Datenbankabfragen abzuraten, da diese natürlich viel langsamer sind, als die programminternen Funktionen.
Overtone69
Beiträge: 88
Registriert: 03.03.2010, 14:12

Zeilenumbruch im Platzhalter

Beitrag von Overtone69 »

Ein direkter "Zeilenumbruch im Platzhalter" ist wohl nicht möglich, da hier nur ein Textfeld vorliegt, oder kann ich hier \n oder <br> einsetzen? Falls das ginge: Auf wie viele Zeichen bin ich hier bergrenzt? Die zweite Mglichkeit (die ich mir vorstellen könnte) wäre über ein dynamisches Textfeld. Wäre hier prinzipiell meine folgende grob verständlich geschriebene SQL-Abfrage möglich:

Falls ein Datensatz mit der E-Mail-Adresse test@test.de aus der Empfängerliste gefunden wird, dann setze den Inhalt aus dem Datensatzfeld XY in dieses dynamische Textfeld.
Falls ein Datensatz mit der E-Mail-Adresse test@test.de nicht in der Datenbank existiert, dann lasse das dynamische Textfeld leer.

Das Ganze soll letztendlich schlicht und einfach nur für die Lösung folgender Problematik dienen:
Wir versenden einen einzigen Newsletter an Kunden und Mitarbeiter. Nur die Mitarbeiter sollen zusätzliche Informationen erhalten, welche in der Mitarbeiter-Datenbank-Tabelle vorhanden sind. Gibt es für dieses Problem vielleicht auch eine ganz andere Lösung?

Und so nebenbei: Um welchen Faktor verzögert sich der Versand bei umfangreichen Datenbank-Abfragen bei jeder einzelnen E-Mail?

Vielen Dank im Voraus
Overtone
Antworten