Ik ben benieuwd of iemand mij in Jip en Janneke taal kan uitleggen wat "Content-Transfer-Encoding" inhoudt. Ik ben ermee aan het experimenteren, maar ik begrijp niet goed waar het voor dient. Van de uitleg op internet word ik helaas ook niet veel wijzer, want die is me veel te technisch en snap ik niet.
Als ik vanaf mijn server een mail verstuur dan kan ik "Content-Transfer-Encoding" toevoegen als header, maar ik weet niet of dat überhaupt nodig is. Als ik 'm niet toevoeg gaat het namelijk gewoon goed.
Echter, ik zie in veel mails die ikzelf ontvang Content-Transfer-Encoding op 'base64' ingesteld staan. Ik heb dat bij mijn eigen mail ook eens geprobeerd, maar dan wordt de mail totaal onleesbaar met allerlei rare vierkantjes. Als ik Content-Transfer-Encoding instel op x-token dan gaat het goed, maar als ik Content-Transfer-Encoding instel op quoted-printable dan werkt de link in de mail ineens niet meer.
Mijn vraag is ... waar dient Content-Transfer-Encoding voor? Moet ik het wel of niet instellen, en zo ja op welke waarde?
Oh ja ... Content-Type heb ik ingesteld op 'text/html; charset=utf-8'.
Het is verstandig, maar je moet een afweging maken welke encoding je wil gebruiken. Base64 is eenvoudig, maar daardoor levert het je ook sneller een verhoogde spam score op. quoted-printable als PHP functie is nog wel eens buggy, een eigen implementatie werkt beter, en is alsnog eenvoudig zat. Daarnaast kun je soms ook nog wegkomen met 7bit als je geen speciale tekens gebruikt (eerste 128 tekens in de ASCII reeks), of 8bit als je alleen de 256 ASCII karakters gebruikt.
De meeste mailprogramma's doen gewoon heel simpel alle tekst parts zijn quoted-printable of 7bit, plaatjes of andere attachments zijn base64.
Is het niet veel eenvoudiger om gewoon iets als phpmailer of swiftmailer te gebruiken? Die doen dat werk gewoon zelf voor je.
>> Is het niet veel eenvoudiger om gewoon iets als phpmailer of swiftmailer te gebruiken? Die doen dat werk gewoon zelf voor je.
Als ik wat meer tijd heb, zal ik me daar eens in verdiepen.
Alles lijkt nu te werken ... ik het dat quoted printable toegepast op het plain tekst gedeelte. Dat gaat goed, maar als ik vervolgens wordwrap toepas hakt ie de mail op de verkeerde plek in stukken. Grrr ...
En als ik nu gewoon die hele encoding weglaat? Kan dat kwaad?
quoted printable doet volgens protocol zelf al wordwrapping, dat hoor je normaliter niet zelf te doen.
De encoding weglaten kan voor eenvoudige mails geen kwaad, dus enkelvoudig, geen mime, geen multipart, en hooguit 8bit dus geen unicode. Encoding niet toepassen op mails die niet aan die eisen voldoen leidt tot onvoorspelbaar gedrag, afhankelijk van de gebruikte client.
>> quoted printable doet volgens protocol zelf al wordwrapping, dat hoor je normaliter niet zelf te doen.
Oké ... even als laatste nog voor de duidelijkheid ... ik heb dus een mail met een plain tekst gedeelte en een html gedeelte ... Daartussen staat dan een boundary, en geef je Content-Type en Content-Transfer-Encoding aan, dus zeg maar zoiets:
--abc123abc123
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Dit is plain tekst.
--abc123abc123
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Dit is <strong>html</strong>.
Is het nu de bedoeling dat ik dit hele stuk (incl. Content-Type en Content-Transfer-Encoding)door de quoted_printable_encode() functie heen gooi, of alleen het plain tekst stukje en het html stukje?
Ik kan me voorstellen dat Base64 in meerdere/andere situaties werkt waar quoted-printable tekort schiet. Je zou dus kunnen zeggen dat Base64 altijd werkt, maar dat het in sommige situaties "overkill" is. Maar wellicht kan Ben hier nog iets over zeggen?
Uit mijn hoofd is de default 8bit, maar ik kan het uiteraard mis hebben. Base64 is eenvoudig, maar verbruikt al heel snel erg veel ruimte, en het is vaak onnodig tenzij je met binaire data te maken hebt. Quoted-printable is zuinig, maar iets minder eenvoudig dan base64. Nog zuiniger is uiteraard 7/8bit, maar dit werkt niet op regels die langer zijn dan de standaard aanwijst etc. Het is in die zin altijd een afweging.
Thanks voor je aanvulling ... maar wat bedoel je met "zuinig" en "minder eenvoudig" als je zegt "Quoted-printable is zuinig, maar iets minder eenvoudig dan base64."?