Det kan være litt tett å lese, men avsnittet Content-Transfer-Encoding i RFC 1341 har alle detaljene. Situasjonen er ganske dårlig fra verre til verre Her er min oppsummering. SMTP, per definisjon RFC 821, begrenser e-post til linjer med 1000 tegn på 7 biter hver. Det betyr at ingen av bytesene du sender ned i røret, kan ha den mest betydningsfulle høyeste rekkefølgen sett til 1. Innholdet som vi vil sende vil ofte ikke overholde denne begrensningen iboende. Tenk på et bilde fil eller en tekstfil som inneholder Unicode-tegn, vil byte av disse filene ofte ha sin 8. bit satt til 1 SMTP, ikke tillater dette, så du må bruke overføringskoding for å beskrive hvordan du har jobbet rundt mismatch. The verdier for Content-Transfer-Encoding header beskriver regelen du har valgt for å løse dette problemet.7Bit Encoding.7bit betyr ganske enkelt Min data består bare av US-ASCII-tegn, som bare bruker de nedre 7 bitene for hvert tegn. Du garanterer i utgangspunktet at alle bytes i din con telt følger allerede restriksjonene for SMTP, og det behøver derfor ingen spesiell behandling. Du kan bare lese den som er. Merk at når du velger 7bit, godtar du at alle linjene i innholdet ditt er mindre enn 1000 tegn i lengden. Så lenge innholdet ditt overholder denne regelen, er 7bit den beste overføringskoden, siden det ikke er noe ekstra arbeid nødvendig, leser du bare bytesene etter hvert som de kommer ut av røret. Det er også lett å eyeball 7bit innhold og gir mening. ideen her er at hvis du bare skriver i ren engelsk tekst, vil du ha det bra Men det var ikke sant i 2005, og det er ikke sant today.8Bit Encoding.8bit betyr at dataene mine kan omfatte utvidede ASCII-tegn de kan bruke 8. høyeste bit for å angi spesialtegn utenfor de vanlige US-ASCII 7-bit tegnene Som med 7bit er det fortsatt en linjegrense på 1000 tegn. 8bit, akkurat som 7bit, gjør egentlig ikke noen transformasjon av bytesene som de er skrevet til eller lest fra wire Det betyr bare at du ikke er gua antyder at ingen av bytesene vil ha den høyeste biten satt til 1. Dette virker som et steg opp fra 7bit siden det gir deg mer frihet i innholdet. Men RFC 1341 inneholder denne godbit. Som ved publisering av dette dokumentet, er det ingen standardiserte Internett-transporter som det er legitimt å inkludere ukodet 8-bit eller binær data i postlegemer. Det er derfor ingen omstendigheter hvor 8bit eller binær Content-Transfer-Encoding faktisk er lovlig på Internett. RFC 1341 kom ut over 20 år siden Siden da har vi fått 8bit MIME Extensions i RFC 6152 Men selv da kan linjegrenser fortsatt gjelde. Merk at denne utvidelsen IKKE eliminerer muligheten for at en SMTP-server begrenser linjelengder-servere, er fri til å implementere denne utvidelsen, men likevel stille en linjelengden grense ikke lavere enn 1000 oktetter. Binær Encoding. binary er den samme som 8bit bortsett fra at det ikke er noen lengdebegrensning Du kan fortsatt inkludere noen tegn du vil ha, og det er ingen ekstra koding Simil ar til 8bit RFC 1341 sier at det egentlig ikke er en legitim kodende overføring som koder RFC 3030 utvidet dette med BINARYMIME. Quoted Printable. Før 8BITMIME-utvidelsen måtte det være en måte å sende innhold som ikke kunne være 7bit over SMTP HTML-filer som kan ha mer enn 1000 tegn linjer, og filer med internasjonale tegn er gode eksempler på dette Den citerte utskrivbare kodingen Definert i § 5 1 i RFC 1341 er utformet for å håndtere dette Det gjør to ting. Defines hvordan du unnslipper ikke-amerikanske ASCII tegn slik at de kan bli representert i bare 7-biters tegn Kortversjonen de vises som et like tegn samt to 7-biters tegn. Definer at linjene ikke vil være større enn 76 tegn, og at linjeskiftene vil bli representert ved hjelp av spesialtegn som deretter blir rømt. Quoted Printable, på grunn av rømming og korte linjer, er mye vanskeligere å lese av et menneske enn 7bit eller 8bit, men det støtter et mye bredere spekter av mulig innhold. Base64 Encoding. If dataene dine er stort sett ikke-tekst-ex-en bildefil, du har ikke mange alternativer 7bit er utenfor tabellen 8bit og binær ble ikke støttet før MIME-utvidelsen RFCs sitert-utskrivbare ville fungere, men er veldig ineffektiv hver byte kommer til å bli representert av 3 characters. base64 er en god løsning for denne typen data. Det koder for 3 råbyte som 4 US-ASCII-tegn, noe som er relativt effektivt. RFC 1341 begrenser ytterligere linjelengden til base64-kodet data til 76 tegn som passer inn i en SMTP-melding, men det er relativt enkelt å administrere når du bare splitter eller sammenkaller vilkårlige tegn ved faste lengder. Den store ulempen er at base64-kodet data er ganske mye helt uleselig av mennesker, selv om det bare er ren tekst under.5 Feltet Content-Transfer-Encoding Header.5 Content-Transfer-Encoding Header-feltet. Mange innholdstyper som kan sendes via e-post, er representert, i sitt naturlige format, som 8-biters karakter eller binære data. Slike data kan ikke overføres via noen transportprotokoller For eksempel begrenser RFC 821 e-postmeldinger til 7-biters US-ASCII-data med linjer som ikke overstiger 1000 tegn. Det er derfor nødvendig å definere en standardmekanisme for omkoding av slike data til en 7-biters kortlinjemodul Dette dokumentet angir at slike kodinger vil bli indikert av et nytt overskriftsfelt Content-Transfer-Encoding. Feltet Content-Transfer-Encoding brukes til å indikere hvilken transformasjon som har blitt brukt for å representere kroppen på en akseptabel måte for transport. I motsetning til innholdstypene er en spredning av innholdsoverførings-kodende verdier uønsket og unødvendig. Det er imidlertid ikke en mulighet for å etablere bare en enkelt innholdsoverførings-kodingsmekanisme. en kompakt og effektiv koding av i stor grad binære data og ønsket om en lesbar koding av data som hovedsakelig er, men ikke helt, 7-bits data Av denne grunn er minst to kodende mech anismer er nødvendige en lesbar koding og en tett koding. Innholdsoverførings-kodingsfeltet er utformet for å spesifisere en inverterbar kartlegging mellom den opprinnelige representasjonen av en datatype og en representasjon som lett kan utveksles ved hjelp av 7-bits posttransportprotokoller, slik som definert av RFC 821 SMTP Dette feltet er ikke definert av noen tidligere standard Feltets verdi er et enkelt token som angir typen koding, som er oppført under Formelt. Disse verdiene er ikke sosialfølsomme. Det vil si Base64 og BASE64 og bAsE64 er alle likeverdige En kodingstype på 7BIT krever at kroppen allerede er i en syv-bit post-klar representasjon. Dette er standardverdien - det vil si Content-Transfer-Encoding 7BIT antas hvis innholdsoverførings-kodingsoverskriftfeltet er ikke til stede. Verdiene 8bit, 7bit og binær betyr alt at NO koding har blitt utført. Imidlertid er de potensielt nyttige som indikasjoner på typen av data som finnes i objektet, og der re av typen koding som kan trenge å bli utført for overføring i et gitt transportsystem spesielt. Forskjellen mellom 8bit eller noe annet tenkelig bitbredde-token og binærtoken er at binær ikke krever overholdelse av noen grenser på linjen lengde eller til SMTP-CRLF-semantikken, mens bitbredde-tokens krever en slik overholdelse Hvis kroppen inneholder data i en hvilken som helst bitbredde annet enn 7-bit, må den passende bitbredde Content-Transfer-Encoding token brukes f. eks. 8bit for ukodede 8 bit brede data Hvis kroppen inneholder binære data, må det binære innholdsoverførings-kodingstoken brukes. Innlemmere kan om nødvendig definere nye Content-Transfer-Encoding-verdier, men må bruke en x-token som er et navn prefixed av X - for å indikere sin ikke-standardstatus, for eksempel Content-Transfer-Encoding x-my-new-koding. I motsetning til innholdstypene og undertyper er opprettelsen av nye Content-Transfer-Encoding-verdier eksplisitt og sterkt motløs, som det ser ut til å trolig hindre interoperabilitet med liten potensiell fordel. Bruk av dem er kun tillatt som følge av en avtale mellom samarbeidende brukeragenter. Hvis et overskriftsfelt Content-Transfer-Encoding vises som en del av en meldingsoverskrift, gjelder den hele hele meldingen. Hvis en Innholdsoverførings-kodingsoverskriftsfelt vises som en del av kroppsdelens overskrifter. Det gjelder bare kroppens kroppsdel. Hvis en enhet er av typen flerart eller melding, er innholdsoverføringskoding ikke tillatt å ha noen verdi annet enn litt bredde, f. eks. 7bit, 8bit, etc eller binær. Det skal bemerkes at e-post er karakterorientert, slik at mekanismene beskrevet her er mekanismer for koding av vilkårlig oktetstrømmer, ikke bitstrømmer. Hvis en bitstrøm skal kodes via en av disse mekanismene, må den først konverteres til en 8-bit byte strøm ved hjelp av nettverksstandardbitordre bigendian, hvor de tidligere bitene i en strøm blir de høyere rekkefølgebitene i en byte En bitstrøm som ikke slutter brunfarge 8-biters grense må være polstret med nuller Dette dokumentet gir en mekanisme for å merke til tillegg av slik polstring når det gjelder programmet Innholdstype, som har en polstringsparameter. Kodemekanismer definert her, kodes eksplisitt alle dataene i ASCII. for eksempel anta at et foretak har headerfelter som. Dette må tolkes slik at kroppen er en base64 ASCII-koding av data som opprinnelig var i ISO-8859-1, og vil være i det tegnsettet igjen etter dekoding. Følgende seksjoner vil definere de to standardkodingsmekanismer. Definisjonen av nye innholdsoverførings-kodinger er eksplisitt motløs og bør bare oppstå når det er absolutt nødvendig. Alt innholdsoverføringskodingsnavnområde unntatt det som begynner med X - er eksplisitt reservert til IANA for fremtidig bruk Private avtaler om innholdsoverføring-kodinger er også eksplisitt motet. Visse innholdsoverførings-kodingsverdier kan bare brukes på bestemte innholdstyper. er uttrykkelig forbudt å bruke andre kodinger enn 7bit, 8bit eller binær med et hvilket som helst innholdstype som rekursivt inneholder andre innholdstypefelter, spesielt flerartet og meldingsinnholdstypene. Alle kodinger som er ønsket for legemer av typen multipart eller melding må gjøres på det innerste nivået ved å kode den faktiske kroppen som må kodes.5 Innholdsoverførings-kodingshovedfeltet. Mange innholdstyper som med fordel kan transporteres via e-post, representeres i deres naturlige format som 8- bitkarakter eller binære data Slike data kan ikke overføres via noen transportprotokoller For eksempel begrenser RFC 821 e-postmeldinger til 7-biters US-ASCII-data med 1000 tegnlinjer. Det er derfor nødvendig å definere en standardmekanisme for re-koding slike data i et 7-biters kortlinjemodul Dette dokumentet angir at slike kodinger vil bli indikert av et nytt innholdsoverførings-kodingsoverskriftfelt Feltet Content-Transfer-Encoding brukes til å indikere typen av transformasjon som har blitt brukt for å representere kroppen på en akseptabel måte for transport. I motsetning til innholdstypene er en spredning av innholdsoverførings-kodende verdier uønsket og unødvendig. Ved å etablere bare en enkelt Content-Transfer-Encoding-mekanisme virker mulig Det er en avvei mellom ønsket om en kompakt og effektiv koding av stor-binære data og ønsket om en lesbar koding av data som hovedsakelig er, men ikke helt, 7-bits data. Av denne grunn er minst to kodingsmekanismer er nødvendig en lesbar koding og en tett koding. Innholdsoverførings-kodingsfeltet er utformet for å angi en inverterbar kartlegging mellom den opprinnelige representasjonen av en datatype og en representasjon som lett kan byttes ut ved hjelp av 7 biters posttransportprotokoller, for eksempel de som er definert av RFC 821 SMTP Dette feltet er ikke definert av noen tidligere standard Feltets verdi er et enkelt token som angir typen koding, som oppregnet under Formelt Disse verdiene er ikke sosialfølsomme. Det vil si, Base64 og BASE64 og bAsE64 er alle likeverdige. En kodingstype på 7BIT krever at kroppen allerede er i en syv-biters klare representasjon. Dette er standardverdien - det vil si innhold - Transfer-Encoding 7BIT antas hvis feltet Content-Transfer-Encoding header ikke er tilstede. Verdiene 8bit, 7bit og binær betyr at NO-koding er utført. De er imidlertid potensielt nyttige som indikasjoner på hva slags data som er inneholdt i objektet, og derfor av typen koding som kan trenge å bli utført for overføring i et gitt transportsystem 7bit betyr at dataene er alle representert som korte linjer med US-ASCII-data 8bit betyr at linjene er korte, men der kan være ikke-ASCII-tegn oktetter med høyordensbitsettet Binært betyr at ikke bare ASCII-tegn kan være tilstede, men også at linjene ikke nødvendigvis er kort nok til SMTP-transport. Forskjellen mellom 8bit eller ethvert annet tenkelig bitbredde-token og det binære token er at binær ikke krever overholdelse av noen grenser på linjelengde eller til SMTP-CRLF-semantikken, mens bitbredde-tokens krever slik tilslutning Hvis kroppen inneholder data i en hvilken som helst bit - bredde bortsett fra 7-bit, må passende bitbredde Content-Transfer-Encoding token brukes f. eks. 8bit for ukodede 8-bits brede data Hvis kroppen inneholder binære data, må det binære Content-Transfer-Encoding token brukes. Skillet mellom innholdsoverførings-kodingsverdiene for binær, 8bit osv. kan virke ubetydelig, fordi de alle betyr egentlig ingen - det vil si at det ikke har vært koding av dataene for transport. Det vil imidlertid være en stor verdi med tydelig merking til gateways mellom fremtidige posttransportsystemer med ulik evne til å transportere data som ikke oppfyller restriksjonene for RFC 821 transport. Som ved publisering av dette dokumentet finnes det ingen standardiserte Internett-transporter som det er legitimt t o inkludere ukodede 8-biters eller binære data i postlegemer Dermed er det ingen omstendigheter hvor 8bit eller binær Content-Transfer-Encoding faktisk er lovlig på Internett. Men hvis 8-bit eller binær posttransport blir en realitet i Internett-post, eller når dette dokumentet brukes sammen med en annen 8-bits eller binær kapasitet, må 8-biters eller binære legemer merkes som sådan ved bruk av denne mekanismen. De fem verdiene som er definert for Content-Transfer - Kodingsfelt innebærer ingenting om innholdstypen, annet enn algoritmen som den ble kodet for, eller transportsystemkravene hvis de ikke er kodet. Innlemmere kan om nødvendig definere nye Content-Transfer-Encoding-verdier, men må bruke en x-token som er et navn prefixed av X - for å indikere sin ikke-standardstatus, for eksempel Content-Transfer-Encoding x-my-new-koding. I motsetning til innholdstypene og undertyper er opprettelsen av nye Content-Transfer-Encoding-verdier eksplisitt og sterkt motløs , da det ser ut til å hindre interoperabilitet med liten potensiell fordel. Bruk av dem er bare tillatt som følge av en avtale mellom samarbeidende brukeragenter. Hvis et overskriftsfelt Content-Transfer-Encoding vises som en del av en meldingsoverskrift, gjelder den hele legemet til denne meldingen Hvis et overskriftsfelt for innholdsoverføring og koding vises som en del av en del av en kroppsdel, gjelder den bare for legemets kropp. Hvis en enhet er av type flerart eller melding, er Content-Transfer-Encoding ikke tillatt å ha annen verdi enn litt bredde, f. eks. 7bit, 8bit, etc eller binær. Det skal bemerkes at e-post er karakterorientert, slik at mekanismene beskrevet her er mekanismer for koding av vilkårlig byte-strømmer, ikke bitstrømmer. Hvis en bitstrøm skal kodes via en av disse mekanismene, må den først konverteres til en 8-bit byte-strøm ved hjelp av nettverksstandardbitordningen big endian, hvor de tidligere bitene i en strøm blir de høyere rekkefølgebitene i en byte litt str eam som ikke slutter med en 8-biters grense, må være polstret med nuller Dette dokumentet gir en mekanisme for å merke til tillegg av slik polstring når det gjelder programmet Innholdstype, som har en polstringsparameter. Koderingsmekanismer definert her uttrykkelig kodes for alle data i ASCII For eksempel, anta at et foretak har headerfelter som dette skal tolkes slik at kroppen er en base64 ASCII-koding av data som opprinnelig var i ISO-8859-1, og vil være i det tegnsettet igjen etter dekodering. Følgende seksjoner vil definere de to standardkodingsmekanismer. Definisjonen av nye innholdsoverførings-kodinger er eksplisitt motløs og bør bare oppstå når det er absolutt nødvendig. Alt innholdsoverføringskodingsnavnområde unntatt det som begynner med X - er eksplisitt reservert til IANA for fremtidig bruk Private avtaler om innholdsoverførings-kodinger er også eksplisitt motet. Visse innholdsoverførings-kodingsverdier kan bare brukes på visse innholds - Typer Det er spesielt forbudt å bruke andre kodinger enn 7bit, 8bit eller binær med hvilket som helst innholdstype som rekursivt inneholder andre innholdstypefelter, spesielt flerartet og meldingen innholdstypene Alle kodinger som er ønsket for organer av type multipart eller melding må gjøres på det innerste nivået ved å kode den faktiske kroppen som må kodes. NOTE PÅ ENKODERENDE RESTRIKSJONER. Selv om forbudet mot å bruke innholdsoverførings-kodinger på data av typen multipart eller melding kan virke altfor begrensende, det er nødvendig å forhindre nestede kodinger, hvor data blir passert gjennom en kodingsalgoritme flere ganger, og må dekodes flere ganger for å kunne vises korrekt. Nestede kodinger legger til betydelig kompleksitet for brukeragenter bortsett fra de åpenbare effektivitetsproblemer med slike flere kodinger , kan de skjule den grunnleggende strukturen til en melding. Spesielt kan de innebære at flere avkodingsoperasjoner er nødvendige bare for å f Angi hvilke typer objekter en melding inneholder Banning nestede kodinger kan komplisere jobben til bestemte postgateways, men dette virker mindre av et problem enn effekten av nestede kodinger på brukeragenter. NOTER OM RELASJONEN MELLOM INNHOLDET-TYP OG INNHOLD-OVERFØRSEL - KODING. Det kan virke som Content-Transfer-Encoding kan utledes av egenskapene til innholdstypen som skal kodes, eller i det minste at bestemte innholdsoverførings-kodinger kan bli mandatt til bruk med spesifikke innholdstyper Det er flere grunner til at dette ikke er tilfellet For det første, gitt de ulike transporttypene som brukes til post, kan enkelte kodinger være hensiktsmessige for enkelte innholdstype transportkombinasjoner og ikke for andre. For eksempel i en 8-bit transport, ville det ikke være nødvendig med koding for tekst i bestemte tegnsett, mens slike kodinger er tydeligvis kreves for 7-bits SMTP. For det andre kan visse innholdstyper kreve forskjellige typer overføringskoding under forskjellige cir cumstances For eksempel kan mange PostScript-legemer bestå helt av korte linjer med 7-bits data og krever derfor lite eller ingen koding. Andre PostScript-kropper, spesielt de som bruker binærkodingsmekanisme for nivå 2 PostScript, kan bare være rimelig representert ved hjelp av en binær transportkoding. Endelig, Siden Content-Type er ment å være en åpen spesifikasjonsmekanisme, strenge spesifikasjoner av en tilknytning mellom innholdstypene og kodene, kombinerer effektivt spesifikasjonen til en applikasjonsprotokoll med en bestemt lavere nivåtransport. Dette er ikke ønskelig siden utviklerne av en Innholdstype skal ikke være oppmerksom på alle transportene som er i bruk, og hva deres begrensninger er. Merk på overføring av innkodingsordninger. De citerte utskriftsbare og base64 kodene er utformet slik at konvertering mellom dem er mulig. Det eneste problemet som oppstår i en slik konvertering er håndtering av linjeskift Når konvertering fra sitert utskrift til base64 må en linjeskift konverteres til en CRLF-sekvens Likeledes bør en CRLF-sekvens i base64-data konverteres til en citerbar utskriftslinjepause, men bare når man konverterer tekstdata. NOTER PÅ KANONISK ENKODINGSMODELL. Det var litt forvirring i tidligere utkast til dette notatet om modell for når e-postdata skulle konverteres til kanonisk form og kodet, og spesielt hvordan denne prosessen vil påvirke behandlingen av CRLFer, da representasjonen av nye linjer varierer sterkt fra system til system. Av denne grunn er en kanonisk modell for koding presentert som Tillegg H.5 1 Sitat-Utskriftsvennlig Innhold-Overføring-Koding. Den Quoted-Printable Encoding er ment å representere data som i stor grad består av oktetter som tilsvarer utskrivbare tegn i ASCII-tegnsettet. Det koder for dataene på en slik måte at de resulterende oktetter vil ikke modifiseres ved posttransport Hvis dataene som er kodet, hovedsakelig er ASCII-tekst, forblir den kodede dataformen i stor grad gjenkjennelig av mennesker. En kropp whi ch er helt ASCII kan også være kodet i Quoted-Printable for å sikre integriteten til dataene hvis meldingen skal passere gjennom en tegnoversettelse og eller linjebrytende gateway. In denne kodingen skal oktetter representeres som bestemt av følgende rules. Rule 1 Generell 8-bit representasjon. Enhver oktett, unntatt de som indikerer en linjeskift i henhold til nylinjekonvensjonen for den kanoniske form av dataene som er kodet, kan representeres av en etterfulgt av en tosifret heksadesimal representasjon av oktets s verdi Sifrene i det heksadesimale alfabetet til dette formålet er 0123456789ABCDEF Store bokstaver må brukes når du sender heksadesimale data, selv om en robust implementering kan velge å gjenkjenne små bokstaver ved kvittering. Eksempelvis kan verdien 12 ASCII-formefôr representeres ved 0C, og verdien 61 ASCII EQUAL SIGN kan representeres av 3D Unntatt når følgende regler tillater en alternativ koding, er denne regelen obligatorisk. Rule 2 Literal represe ntasjon Octets med desimalverdier på 33 til 60 inklusive, og 62 til 126 inklusive, kan være representert som ASCII-tegnene som tilsvarer disse oktene EXCLAMATION POINT MINDRE THAN, og ellers enn TILDE. Rule 3 White Space. Octets med verdier på 9 og 32 kan representeres som henholdsvis ASCII TAB HT og SPACE tegn, men MÅ IKKE være så representert på slutten av en kodet linje. Eventuelle TAB HT eller SPACE tegn på en kodet linje må følges på denne linjen av et utskrivbart tegn Spesielt en på slutten av en kodet linje, som indikerer en myk linjeskift, se regel 5 kan følge ett eller flere TAB HT - eller SPACE-tegn. Det følger at en oktett med verdi 9 eller 32 vises på slutten av en kodet linjen må være representert i henhold til regel 1 Denne regelen er nødvendig fordi noen MTA-meldinger Transportagenter, programmer som transporterer meldinger fra en bruker til en annen, eller utfører en del av slike overføringer, er kjent for å legge linjer med tekst med mellomrom, og andre er kjent for å fjerne hvite mellomrom på slutten av en linje. Når du avkoder en Quoted-Printable-kropp, må eventuelt hvitt mellomrom på en linje slettes, da det nødvendigvis har blitt lagt til av intermediære transportmidler. Rule 4 linjeskift. En linjeskift i en tekstkroppsdel, uavhengig av hva dens representasjon følger den kanoniske representasjonen av dataene som er kodet, må representeres av en RFC 822 linjeskift, som er en CRLF-sekvens i den siterte - Utskrivbar koding Hvis isolerte CR og LF, eller LF CR og CR LF-sekvenser får vises i binære data i henhold til kanonisk form, må de representeres ved hjelp av henholdsvis 0D, 0A, 0A 0D og 0D 0A notasjonene. Merk at mange implementering kan velge å kode den lokale representasjonen av ulike innholdstyper direkte. Spesielt kan dette gjelde for vanlig tekstmateriale på systemer som bruker newline-konvensjoner annet enn CRLF-avgrensere. En slik implementering er permis sible, men genereringen av linjeskift må generaliseres for å ta hensyn til tilfellet der alternative representasjoner av newline-sekvenser benyttes. Rulle 5 Soft Line Breaks. Den angitte utskriftskoden krever at kodede linjer ikke er mer enn 76 tegn lange. Hvis lengre linjer skal kodes med Quoted-Printable-kodingen, må det brukes myke linjeskift Et likestegn som det siste tegnet på en kodet linje indikerer en slik ikke-signifikant myk linjeskift i den kodede teksten. Dermed hvis den raske form for linjen er en enkelt ukryptert linje som sier Dette kan representeres, i den kodede kvitteringen, da dette gir en mekanisme som lange linjer er kodet på, slik at de blir gjenopprettet av brukeragenten. Den 76 tegngrensen teller ikke etterfølgeren CRLF, men teller alle andre tegn, inkludert alle like tegn. Siden bindestrekkarakteren - er representert som seg selv i den kodede kodingen, må det tas hensyn når man encapsulerer et kodet b ody i en multipart enhet for å sikre at innkapslingsgrensen ikke vises hvor som helst i den kodede kroppen. En god strategi er å velge en grense som inkluderer en tegnsekvens som som aldri kan vises i en sitertrykkbar kropp. Se definisjonen av multipart meldinger senere i dette dokumentet. NOTE Den sitertrykkbare kodingen representerer noe av et kompromiss mellom lesbarhet og pålitelighet i transportorganer. Kodene kodet med den kodede utskrivbare kodingen vil fungere pålitelig over de fleste postgateways, men fungerer kanskje ikke perfekt over noen få gateways, særlig de som involverer oversettelse til EBCDIC I teorien kan en EBCDIC gateway dekode en citerbar utskrivbar kropp og omkode den med base64, men slike gateways eksisterer ikke. Et høyere konfidensnivå tilbys av base64 Content-Transfer-Encoding A way for å få rimelig pålitelig transport gjennom EBCDIC gateways er å også sitere ASCII-tegnene i henhold til regel 1 Se vedlegg B for mer informasjon. Beca Bruke sitater som kan skrives ut, antas generelt å være line-orientert. Det kan forventes at bruddene mellom linjene med siterte utskriftsdata kan endres i transport, på samme måte som vanlig tekstmelding alltid er blitt endret i Internet-mail når passerer mellom systemer med forskjellige newline-konvensjoner Hvis slike endringer sannsynligvis vil utgjøre en korrupsjon av dataene, er det sannsynligvis mer fornuftig å bruke base64-kodingen i stedet for den kodede utskriftsbare kodingen.5 2 Base64 Content-Transfer-Encoding. Base64 Content-Transfer-Encoding er utformet for å representere vilkårlig sekvenser av oktetter i en form som ikke er menneskelig lesbar. Koding og dekoding algoritmer er enkle, men de kodede dataene er konsekvent bare ca. 33 prosent større enn de ukodede dataene. Denne kodingen er basert på en som brukes i Privacy Enhanced Mail-applikasjoner, som definert i RFC 1113 Base64-kodingen er tilpasset fra RFC 1113, med en endrings base64 eliminerer mekanismen for em bedded clear text. En 65-tegns undergruppe av US-ASCII brukes, slik at 6 biter kan representeres per utskrivbart tegn. Den ekstra 65. tegn,, brukes til å betegne en spesiell behandlingsfunksjon. NB! Denne delmengden har den viktige egenskapen den er representert identisk i alle versjoner av ISO 646, inkludert US ASCII, og alle tegn i delmengden er også representert identisk i alle versjoner av EBCDIC Andre populære kodinger, for eksempel kodingen som brukes av UUENCODE-verktøyet og basis85-kodingen spesifisert som en del av Level 2 PostScript, ikke del disse egenskapene og følgelig ikke oppfyller portabilitetskravene som en binær transportkoding for post må oppfylle. Kodingsprosessen representerer 24-biters grupper av inngangsbiter som utgangsstrenger med 4 kodede tegn Fremgangsmåte fra venstre til høyre, en 24-bits inngangsgruppe dannes ved sammenkobling av 3 8-bits inngangsgrupper Disse 24 bitene blir deretter behandlet som 4 sammenkoblede 6-biters grupper, som hver er oversatt til et enkeltsiffer i n base64-alfabetet Når koding av en bitstrøm via base64-kodingen, må bitstrømmen antas å bli bestilt med den mest signifikante bit først. Det vil si at den første bit i strømmen vil være høyordensbiten i den første bytte, og den åttende bit vil være lavordensbit i den første byte og så videre. Hver 6-biters gruppe brukes som en indeks i en rekke med 64 utskrivbare tegn. Tegnet referert til av indeksen, blir plassert i utgangen streng Disse tegnene som er identifisert i tabell 1 nedenfor, er valgt for å være universelt representativ, og settet utelukker tegn med særlig betydning for SMTP, f. eks. CR, LF og innkapslingsgrensene som er definert i dette dokumentet e g. Table 1 The Base64-alfabetet. Utgangsstrømkodede byte må være representert i linjer med ikke mer enn 76 tegn hver. Alle linjeskift eller andre tegn som ikke finnes i Tabell 1, må ignoreres ved dekoding av programvare. I base64-data, andre tegn enn de i tabell 1, linjen pauser og andre hvite områder antar trolig en overføringsfeil, om hvilken en advarselsmelding eller en meldingavvisning kan være hensiktsmessig under noen omstendigheter. Spesiell behandling utføres dersom færre enn 24 bits er tilgjengelige på slutten av dataene som er kodet. En fullkodende kvantum er alltid ferdig på enden av kroppen Når færre enn 24 inngangsbiter er tilgjengelige i en inngangsgruppe, legges nullbiter til høyre for å danne et integrert antall 6-biters grupper Utgangstegnposisjoner som ikke er nødvendige for å representere faktiske inngangsdata er satt til tegnet Siden alle base64-inngangene er et integrert antall oktetter, kan bare følgende tilfeller oppstå 1 det endelige kvantet av kodende inngang er et integrert flertall på 24 bits her, den endelige enheten av kodet utgang vil være et integrert flertall av 4 tegn uten polstring, 2 sluttkvantum av kodingsinngang er nøyaktig 8 biter her, den endelige enheten med kodet utgang vil være to tegn etterfulgt av to polstringskarakterer, eller 3 sluttkvantum av kodende inngang er nøyaktig 16 bits her, den endelige enheten med kodet utgang vil være tre tegn etterfulgt av en utfyllende karakter. Det må tas hensyn til å bruke de riktige oktene for linjeskift hvis base64-kodingen blir brukt direkte på tekstmateriale som har ikke blitt konvertert til kanonisk form Spesielt bør tekstlinjebrudd konverteres til CRLF-sekvenser før base64-koding. Det viktigste å merke seg er at dette kan gjøres direkte av koderen i stedet for i et tidligere kanonicaliseringstrinn i noen implementeringer. NB There is no need to worry about quoting apparent encapsulation boundaries within base64-encoded parts of multipart entities because no hyphen characters are used in the base64 encoding. Please Whitelist This Site. I know everyone hates ads But please understand that I am providing premium content for free that takes hundreds of hours of time to research and write I don t want to go to a pay-only model like some sites, but when more an d more people block ads, I end up working for free And I have a family to support, just like you. If you like The TCP IP Guide, please consider the download version It s priced very economically and you can read all of it in a convenient format without ads. If you want to use this site for free, I d be grateful if you could add the site to the whitelist for Adblock To do so, just open the Adblock menu and select Disable on Or go to the Tools menu and select Adblock Plus Preferences Then click Add Filter at the bottom, and add this string Then just click OK. Thanks for your understanding. Sincerely, Charles Kozierok Author and Publisher, The TCP IP Guide. NOTE Using software to mass-download the site degrades the server and is prohibited If you want to read The TCP IP Guide offline, please consider licensing it Thank you. The Book is Here and Now On Sale. Enjoy The TCP IP Guide Get the complete PDF. MIME Content-Transfer-Encoding Header and Encoding Methods Page 2 of 3.MIME Encoding Methods. To send non-ASCII data in MIME, it is necessary that it be encoded The Content-Transfer-Encoding header is used to specify how a MIME message or body part has been encoded, so that it can be decoded by its recipient The following types of encoding are defined.7bit This indicates that the message is already in ASCII form compatible with RFC 822 It is the default and is what is assumed if no Content-Transfer-Encoding header is present.8bit binary These synonymous values mean the message has been encoded directly in 8-bit binary form Yes, I did just say that this would violate the rules of RFC 822 These options appear to have been included to support future mechanisms for transporting binary data directly RFC 1652 describes an SMTP extension that discusses this in part SMTP Service Extension for 8bit-MIMEtransport sic, there is no space between MIME and transport However, the standard is clear that this still does not allow the transfer of raw binary data using SMTP and RFC 822.quoted-printa ble This is a special encoding that is used when most of the data is ASCII text, but when it contains certain violations of the rules of RFC 822 These illegal sections are converted using special encoding rules so the data as a whole is consistent with RFC 822.base64 An encoding used to allow arbitrary binary data to be represented in ASCII form The data is then sent as ASCII and decoded back into binary form by the recipient. The quoted-printable and base64 encodings are the most interesting ones, because they are what allow non-RFC-822 data to be sent using RFC 822.Key Concept MIME supports four encoding methods 7bit 8bit binary quoted-printable and base64 7bit encoding is standard ASCII and is used for text quoted-printable encoding is for output that is mostly text but has some special characters that must be encoded base64 is used for arbitrary binary files The 8bit encoding method is defined in MIME but not used for RFC 822 messages. This encoding method is used when the message is mostly ASCII only the problem bytes are encoded The result is that RFC 822 compatibility is achieved while maintaining most of the data as regular text so it can still be easily understood by a human. An example of where this would be letters with tildes or accents, such as those used in French or Spanish Another would be a text message formed using an editor that inserts carriage return characters in the middle of a line Most of the message is still text The quoted-printable encoding can be used here, with the carriage return characters represented as 0D the hexadecimal value of the character prepended by an equal sign RFC 2046 contains more details on how this is done. Following content is been captured at TcpMon. Request made by SoapUI Pro 3 0 2.POST tf6 services xdsrepositoryb Accept-Encoding gzip, deflate Content-Type multipart related type application xop xml start start-info application soap xml action boundary ---- Part1728349551 1260534830078 MIME-Version 1 0 User-Agent Jakar ta Host Content-Length 13318.------ Part1728349551 1260534830078 Content-Type application xop xml charset UTF-8 type application soap xml action ProvideAndRegisterDocumentSetRequest Content-Transfer-Encoding 8bit Content-ID.------ Part1728349551 1260534830078 Content-Type text plain charset us-ascii Content-Transfer-Encoding 7bit Content-ID. This is depeche s document. Request made by xdstest tool. POST tf6 services xdsrepositoryb Content-Type multipart related boundary MIMEBoundaryurnuuid613A2BD2D99F1E6B5912 60534073176 type application xop xml start start-info application soap xml action urn ihe iti 2007 rovideAndRegisterDocumentSet-b User-Agent Axis2 Host Transfer-Encoding chunked.20f1 --MIMEBoundaryurnuuid613A2BD2D99F1E6B59126053407 3176 Content-Type application xop xml charset UTF-8 type application soap xml Content-Transfer-Encoding binary Content-ID.--MIMEBoundaryurnuuid613A2BD2D99F1E6B59126053407 3176 Content-Type text plain Content-Transfer-Encoding binary Content-ID 1 g. This is my document. From where can i set Content-Transfer-Encoding as binary. At the nist public registry, you can view the text document which is been sent as an attachment. I have also tried making Encode Attachments as true under TestRequest Properties But its not working either Thanks for the help.
No comments:
Post a Comment