Vandaag een laatste mailing klaargemaakt om nog wat wandelaars te werven voor de 2daagse.
Om te beginnen kopieer ik gewoon de volledige directory van de vorige mailing. Kwestie van een heleboel basisbestanden al klaar te hebben. De grote structuur van de mail zelf hoef ik dan ook niet meer te wijzigen. Alle bestanden die ik nodig heb voor de mailing (logo’s, stylesheets, content, etc) gooi ik allemaal in één directory. Ook al heb ik dan een hoop logo’s dubbel staan, maar dan weet ik zeker dat ik met het juiste logo werk en, als ik later het logo zou veranderen van dimensie ofzo, ik niet in de problemen kom.
We voorzien altijd minimum twee en maximum vier talen zodat de header altijd begint met een taalselectie en een paar bookmarks in de mailing zelf.
De footer van de mailing blijft ook altijd hetzelfde met dezelfde blabla (uitschrijven, verantwoordelijk, etc.)
Tot voor kort maakte ik uitsluitend gebruik van het onvolprezen en haast niet te overtreffen Notepad++ maar om toch iets sneller te werken met afbeeldingen en dergelijke ben ik tenslotte overgeschakeld op MS Sharepoint Designer. De finale afwerking – het wijzigen van de bookmarks, het consolideren van bepaalde styles, etc – doe ik toch nog met Notepad++.
Eenmaal de volledige nieuwsbrief klaar, zorg ik eerst voor de online kopie. Gewoon een kwestie van de folder op de webserver aan te maken en alle nodige bestanden over te zetten. De adressenlijst en andere zaken die niet nodig zijn om de pagina op te bouwen zet ik wel niet over.
Volgende stap is controleren met de wat mij betreft twee belangrijkste browsers (FireFox en IE, samen goed voor 99% van het verkeer) of alles nog klopt. En na hier en daar nog wat te sleuren en te trekken open ik het finale restulaat in IE en sla ik alles op als een “web archive, single file (mht)”.
Vanaf nu is het weer aan Notepad++ om de nodige wijzigingen te doen.
En ziedaar, de code van de e-mail die zal verstuurd worden op een paar uitzonderingen na.
Allereerst is dit absoluut niet de ‘From’ die we willen hebben dat de mensen te zien krijgen. In casu verander ik de eerste lijn door From: <mailing@2daagse.be>, waar de groter dan en kleiner dan nodig is zodat bepaalde filters die niet zomaar wegbonjouren omdat die niet 100% rfc822 compliant is.
De eigenlijke mail is nu voor 99,9% klaar. Enkel nog de bestemmeling toevoegen en een systeem vinden om deze te versturen.
Laat ons eerst eens kijken hoe we een dergelijke mail verstuurd krijgen. Die ga je niet zomaar als bijlage aan een andere mail toevoegen. De mensen zouden immers niet weten wat ermee gedaan. Nee, dit is de mail op zich en we moeten een programma vinden die in staat is de code die in de mail staat te interpreteren en te gebruiken zonder dat we hier zelf nog iets mee moeten doen.
Het ideale programma hiervoor staat bij de meeste mensen zomaar ter beschikking. Iedereen met een beetje recente Windows PC kan zomaar de nodige onderdelen hiervoor installeren: IIS met de ingebouwde SMTP server. Hoe deze configureren is een ander verhaal maar standaard heeft deze een pickup directory. Alles wat je in deze directory dropt, wordt verwerkt door de smtp engine van IIS en verstuurd, gedropt of gewoon aan de kant gezet als Badmail.
En hoe voegen we nu een bestemmeling toe? Gewoon een lijntje toevoegen met een daarin To: en een geldig e-mail adres (zo wordt de e-mail gestuurd naar iemand@pieter.org To: iemand@pieter.org).
Nu kan je gemakkelijk ook meerdere bestemmelingen toevoegen door door duizend en één lijntjes met To: en een e-mail adres te zetten, maar dan zien alle bestemmelingen natuurlijk ook de adressen van de anderen en dat kan (en mag gezien dit toch even de normale privacy regelingen te buiten gaat) niet de bedoeling zijn. Daarom gewoon een mailtje per bestemmeling maken.
Hiervoor heb je gewoon vier dingen nodig:
- De bewaarde mth file met aangepast From adres (hier message.mht)
- Een lijst met alle individuele adressen, één per lijn (hier adressen.txt)
- Een eenvoudige batch file (hier doit.bat)
- Een command prompt
De bachtfile is zeer eenvoudig en doet niet meer dan een parameter uitlezen die het e-mail adres is van de bestemmeling. De code is heel eenvoudig
echo TO: %1 > tussen.txt
echo %1 >> gedaan.log
copy tussen.txt + message.mht “c:\inetpub\mailroot\pickup\message%1.mht”
Met andere woorden, de eerste lijn leest het e-mail adres als parameter binnen en kopieert die naar het tussen.txt bestand. Om toch maar een idee te hebben wat er wel en wat niet verstuurd werd (een batchfile kan ook crashen of onderbroken worden of gewoon iets anders), wordt dit adres ook nog een keer gekopieerd naar de logfile gedaan.log. En vervolgens wordt tussen.txt aan message.mht samengevoegd naar een bestand in de pickup directory. Omdat het versturen van de e-mail langer duurt het aanmaken van de file in de pickupdirectory, voeg ik gewoon het e-mail adres toe aan de bestandsnaam. Op die manier is ieder bestand toch wel uniek (tenminste als er geen dubbels in de e-mail adressen zitten).
Het grote gemak hier, is dat je met een paar van je eigen adressen eens kan testen of er niets misgaat. Sturen naar mezelf kan dan niet eenvoudiger dan doit iemand@pieter.org.
En heel de zwik en route steken is dan gewoon op de prompt het volgende uitvoeren
for /F %i in (adressen.txt) do @doit.bat %i
Voordeel is dat je alles wat gegenereerd wordt, mooi ziet voorbij flitsen. Wat ik dan ook doe is alle adressen alfabetisch sorteren zodat ik toch enig idee heb van waar de mailing ergens zit.
Belangrijk is wel dat, wanneer de e-mails van enige omvang zijn, toch eens moet rekenen hoe lang het duurt eer deze allemaal vertrokken zijn. Zo heb ik ongeveer 14000 mailtjes verstuurd van een kleine 200Kb maar dit duurde toch wel een stevige 24 uur. Ook niet vergeten af en toe eens te loeren naar de queue directory (dit is de directory met de zeer verhelderende naam queue naast de pickup directory) en checken of deze wel verkleint. Indien niet is de kans vrij groot dat IIS even er de brui aan gegeven heeft. De gemakkelijkste manier om dit te fixen is IIS gewoon herstarten.
Pingback: Set phasers to "wayback" — Michel Vuijlsteke's Weblog
Stijn