Das Rätsel der verschwundenen Punkte im E-Mail-Text
Das nicht ganz so einfache Simple Mail Transfer Protocol
Das Problem tritt auf
- Es wurde berichtet, dass Punkte im Text einer an einen Kunden gesendeten E-Mail verschwanden.
- Wurde dieselbe E-Mail an einen anderen Kunden gesendet, verschwanden die Punkte nicht.
Rückblick auf das Projekt
- Vor etwa 7 Jahren wurde eine Lösung entwickelt, um Dokumentvorlagen in einem einzigen System zu konsolidieren.
- Der Kunde verwendete Microsoft-Word-Vorlagen, um Platzhalter in Dokumente einzufügen.
- Jedes Mal, wenn Mitarbeitende ein Dokument per E-Mail verschickten, mussten die Platzhalter durch die tatsächlichen Inhalte ersetzt werden.
Probleme bei der Vorlagenverwaltung
- Es gab mehrere Vorlagenversionen, die schwer zu verwalten waren.
- Einige Vorlagen verwendeten veraltete Geschäftsbedingungen, Logos, Schriftarten usw.
- Es wurde eine Lösung entwickelt, mit der alle Vorlagen zentral verwaltet werden konnten.
Umsetzung der Lösung
- Der Kunde konnte zentral Vorlagen verwalten, mit denen PDF-Dokumente, Textnachrichten und E-Mail-Texte erzeugt wurden.
- So konnte zum Beispiel eine Vorlage für ein Begrüßungsschreiben an neue Kunden eingerichtet werden.
- Für jeden Übermittlungsweg (E-Mail, SMS, Post) konnten unterschiedliche Vorlagen konfiguriert werden.
Reproduktion des Problems
- Das Problem, dass Punkte verschwanden, trat nur bei E-Mails an einen bestimmten Kunden auf.
- Im Quelltext der Vorlage waren die Punkte vorhanden.
- Bei der lokalen Vorschau des E-Mail-Textes waren die Punkte sichtbar.
Analyse der Ursache
- Beim Erzeugen des E-Mail-Textes gab es Code, der die Länge jeder Zeile begrenzte.
- Wenn eine Zeile die erlaubte Länge überschritt, wurde eine neue Zeile erzeugt und der restliche Inhalt dorthin verschoben.
- Laut SMTP-Spezifikation wird, wenn eine Zeile mit einem Punkt beginnt, ein zusätzlicher Punkt eingefügt, und der Server entfernt den ersten Punkt.
Die Lösung
- Der Code wurde so angepasst, dass beim Beginn einer Zeile mit einem Punkt ein zusätzlicher Punkt eingefügt wird, damit nach dem Entfernen durch den Server weiterhin ein Punkt erhalten bleibt.
- Tests mit dem geänderten Code bestätigten, dass die Punkte nicht mehr verschwanden.
- Das Problem wurde behoben und andere Teams wurden über den Bug informiert.
Ein späteres Folgeproblem
- Einige Monate später hatte ein anderes Team denselben Bug nicht behoben, sodass in einer wichtigen E-Mail erneut Punkte verschwanden.
- Einige Kunden erhielten E-Mails, in denen die neue monatliche Gebühr als $2700 statt $27.00 angezeigt wurde.
- Das Problem wurde sofort durch einen Code-Patch behoben.
Meinung von GN⁺
- Wie wichtig das Verständnis der SMTP-Spezifikation ist: Um Probleme beim E-Mail-Versand zu lösen, ist ein tiefes Verständnis der SMTP-Spezifikation entscheidend.
- Die Komplexität der Vorlagenverwaltung: Die Verwaltung mehrerer Vorlagenversionen kann komplex sein und erfordert ein zentrales Verwaltungssystem.
- Debugging-Fähigkeiten: Die Fähigkeit, Probleme zu reproduzieren und ihre Ursache zu analysieren, ist entscheidend.
- Kommunikation zwischen Teams: Nach der Problemlösung ist es wichtig, Informationen mit anderen Teams zu teilen.
- Automatisierte Tests: Um solche Probleme zu verhindern, ist die Einführung automatisierter Tests sinnvoll.
2 Kommentare
Ich glaube, im Titel wurde
periodnicht als Punkt, sondern als Zeitraum verstanden, haha.Hacker-News-Kommentare
Zusammenfassung der Hacker-News-Kommentare
Schwierigkeiten bei der Implementierung von SMTP-Clients
Eine Geschichte über Arbeitszeugnisse in Deutschland
Cronjobs und SMTP-Clients
Zwei schlechte Gewohnheiten
Notwendigkeit von Dot-Stuffing
Problem mit HTML-MIME-Anhängen
Wenn das erste Zeichen ein Punkt ist
Hinweis auf einen Bugfix
Erfahrungen mit der Implementierung eines NNTP-Servers