identifikatie |
Het zenden van deze file naar een SMTP server is een stuur en response protocol . D.w.z. je stuurt 1 regel en wacht op antwoord van de server . Dit antwoord begint altijd met drie cyfers gevolgd door een spatie of minteken . Een spatie geeft aan dat dit de laatste regel van het antwoord is .
Voorbeeld :
Bevestinging verbinding |
De reactie qua text kan verschillend zijn , dit is afhangelijk van de mailserver . Maar de nummers zijn en hun betekenis zijn voor iedere server het zelfde .
Het eerste programmaatje (MBODYF) doet dus niets anders dan een bestand (mailbody) waarin alle eMail adressen en brieven staan naar de mailserver sturen . De eerste regel van het bestand mailbody moet het IP adres van de mailserver bevatten . De antwoorden van de mailserver worden naar het beeld gestuurd (beter gezegd naar con: ofwel stdout) .
Men heeft daarom een standaard (RFC 1521) bedacht hoe je bericht eruit moet zien . Deze standaard is niet bedacht om SPAM tegentehouden maar om allelei dingentjes met je bericht te kunnen meesturen , zoals foto's muziek en andere bijlage . Het is gegeven aan je (ontvangende) mailprogramma wat er mee wordt gedaan .
Je bericht moet minimaal bestaan uit twee delen teweten aan aanhef en een inhoud . Beide delen worden gescheiden door een lege regel . De aanhef moet bevatten afz , ontvanger en onderwerp .
Aanhef | from:menno@fwn.rug.nl to:geadresseerde@alhier subject: waar gaat dit over |
Je bericht | Aan de lezer 'T ja waar gaat dit eigenlijk over ? Groeten Ike |
Het veld from: zal duidelijk zijn en wordt gebruikt voor het 'beantworden' .
Het veld to: wordt gebruikt voor 'allen beantwoorden' en 'doorsturen' .
Je kunt hier de adressen van alle ontvangers (gescheiden door een ;) inzetten maar je kunt er ook onzin inzetten .
Het subject: geeft het onderwerp aan .
Vergeet niet daarna een legeregel tegeven alsvorens je je proza invoerd . En denk erom dat je niet perongeluk een punt als eerste en enigste teken in een regel zet . Want dat wordt beschouwd als einde bericht !
Goed de punt blijft voor sommigen een probleem maar ook kunnen nog geen bijlage worden meegegeven . Hiertoe de volgende uitbreiding .
We voorzien het bericht van een MIME indeling :
Aanhef | from:menno@fwn.rug.nl to:geadresseerde@alhier subject: waar gaat dit over MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="simple_boundary" | ||||||
Niet direct telezen bericht | Dit kun je niet in je mailprogramma lezen Alleen als je de bron opvraagd kun je dit zien . --simple_boundary |
De waarde die je geeft aan boundary is willekeurig als de combinatie --waarde niet voorkomt in het bestand . Dit wordt gebruikt als een vorm van EndOfRecord . De laatste in het bestand is --waarde-- (soort EndOfFile).
De bijlagen geeft ik een algemeen type mee octet-stream dit werkt meestal overal wel . Een mail programma gebruikt vaak de bestand .ext om de toepassing te koppelen .
Waarom de bijlagen in een base64 (RFC 1522) code ? Dit daar het versturen van bineare data bij de mailserver problemen kan geven (verschil tussen helo en ehlo ). Om alle ellende uit de weg te gaan adviseer ik de bijlagen te coderen (dit geeft een 7 bits ascii code) . Het nadeel van base64 code is dat het bericht 30% groter wordt .
De Disposition beschrijft wat het is (attachment) en hoe het bij de ontvanger moet gaan heten (filename=).
i = sendmail(set_of_Mailadressen,Onderwerp,brief) geen bijlagen .
i = sendfile(set_of_Mailadressen,Onderwerp,brief,set_of_Files) de bijlagen zijn de set_of_Files .
Als i = 0 dan is het goed verzonden . Iedere brief wordt afzonderlijk (direct) verstuurd , een andere mogelijk zou zijn om alle brieven in een (groot) bestand te schrijven en deze in een keer naar de mailserver te sturen .
Omdat ik meestal de mailserver adressen vergeet heb ik een makemail.ini gemaakt waarin de eerste regel je afzender eMailadres is en de volgende regels kunnen meerdere server IP:port adressen bevatten . Er mag maar een actief zijn dat is de eerste die niet uit gekommentariseerd is (-- in begin van een regel) .
Een paar keer per jaar stuur ik ter informatie en ter kontrolle van mijn gegevens een briefje door het hele district . Daartoe is er een kort briefje welke gekoppeld wordt aan het adressen bestand welke ook in de district agenda wordt gebruikt .
De eerste regel van het briefje bevat : onderwerp eventueel gevolgd door de bijlagen gescheiden door een , .DTC uitnodigingen,dtcuit06.doc,dtcinsch06.xls,dtccom06.doc Aan : $ Beste Judovrienden, Hierbij willen we jullie uitnodigen voor de districtteamcompetitie. Alle noodzakelijke informatie staat in de bijlagen. Wij zien jullie reactie graag voor 20 oktober tegemoet. Met vriendelijke groet. District teamcompetitie organisatiecommissie judo Roelie Wesseling Gerard Gelling Anita DinjensHet programma leest deze gegevens maakt via makemail een bestand mailbody en stuurt deze door naar mbodyf welke het op zijn beurt stuurt naar de mailserver .
Het judoprogramma geeft de mogelijkheid een eMail uitvoer temaken in HTML formaat . Het maakt daartoe voor iedere vereninging twee bestanden aan , een kaartjes en een brief bestand . Tevens een bestand waarin staat :
In de eerste regel staat de_naam_van_het_tournooi, ompouletype , ompouledatum . Gevold door :
naam_kaartje_bestand , naam_brief_bestand , verenigingsnaam , verenigingseMail
Tevens maak je een briefje waarin je verteld waarom het gaat :Geachte $ Hierbij uw kaartjes en deelnemer brief Let op ompoulen $ $ ! Groeten M.S.Ter HaseborgDe eerste regel uit het mail bestaand geeft de waarden aan de drie $ tekens . Het programma leest deze gegevens maakt via makemail een bestand mailbody en stuurt deze door naar mbodyf welke het op zijn beurt stuurt naar de mailserver .
Mocht je desalniettemin iets willen toevoegen dan schrijf mij een leuk stukje .
Menno . (30-07-2005)