Monday 2 October 2017

Multipart Content Transfer Koding Binære Alternativer


Jeg skriver en enkel webserver i python som tillater en bruker å laste opp en fil ved hjelp av multipartform-data. Så vidt jeg kan fortelle, må multipart MIME-data være linjebasert. For eksempel må grensen være i begynnelsen av en linje. Jeg kan ikke finne ut hvordan binær data håndteres i denne forbindelse. Min klient (Firefox) kodes ikke i 7bit ASCII eller noe, det er bare rå binære data som sendes. Deler dataene i linjer på vilkårlige steder Er det en maksimal linjelengde spesifisert for flerpartsdata Jeg har prøvd å se gjennom RFC for multipartformdata, men fant ikke noe. spurte Mar 27 13 kl 16:54 Etter å ha gravd gjennom RFCs, tror jeg at jeg endelig fikk alt rett i hodet mitt. Kroppsdelene (dvs. kroppsinnholdet til en enkelt del i en flerartsbeskjed) trenger bare å være linjebasert ved at grensen på slutten av delen begynner med en CRLF. Men ellers må dataene ikke være linebaserte, og hvis innholdet skjer for å ha linebreaker i det, er det ingen maksimal avstand mellom dem, og de må heller ikke bli rømt i alle fall (vel, med mindre innholdsoverførings - Koding er sitertråd). De 7-bits, 8-biters og binære alternativene for Content-Transfer-Encoding indikerer ikke faktisk at noen koding har blitt gjort på dataene (og derfor må ingen koding bli utelatt), de er bare ment å indikere typen data du kan forvente å se i kroppsdelen. Det jeg virkelig fikk på i mitt dårlig uttrykte spørsmål var hvordan å lesebuffer dataene fra stikkontakten, slik at jeg kunne forsikre meg om at jeg fanget grensen, og uten å måtte ha en vilkårlig stor buffer (f. eks. Hvis det ikke skjedde noen linebryt i innholdet, og så en sluttlinje endte opp med å buffere hele greia). Det jeg endte med å gjøre var å buffre fra stikkontakten med en leselinje med maksimal lengde, slik at bufferen aldri ville være lengre enn den, men vil også være sikker på å avslutte hvis en linebreak ble oppstått. Dette sørget for at når grensen kom (etter en CRLF), ville det være i starten av bufferen. Jeg måtte gjøre litt ekstra monkeying rundt for å sikre at jeg ikke inkluderte den endelige CRLF i selve kroppsinnholdet, fordi ifølge RFC er det nødvendig før grensen, og derfor ikke en del av selve innholdet. besvart apr 5 13 kl 12:02 Prøv å gjennomgå RFC 2045. Vanligvis blir binært innhold konvertert til BASE64 av din søknad og inkludert i multi-delen meldingen ved hjelp av Content-Transfer-Encoding. Base64. Det finnes andre mekanismer for å overføre binære data, men dette er ganske vanlig. Binære data omdannes til oktetter og chunked ut i arbitriske lengderstrenger (avhengig av kodingsvarianten - se BASE64-lenken ovenfor). Den mottakende applikasjonen dekoder den deretter i det opprinnelige binære innholdet. Jeg er ikke en pythonprogrammerer, men jeg ville bli overrasket over at du virkelig måtte kodes noe av dette selv. Jeg mistenker at det er prebuilt python bibliotek funksjoner å gjøre dette for deg. svarte Mar 27 13 kl 17:43 takk, jeg så på en annen RFC som ikke var så informativ. Jeg fant også RFC 2046 som spesifikt definerer flere delte meldinger i seksjon 5. Merk det er litt subtilitet i disse RFC-ene, som gjennom meg av: det står at flerpartsmeddelinger ikke kan ha kodinger annet enn 7-bit, 8-bit og binær (dvs. ikke Base-64). Men det går videre til å si at de enkelte delene i multi-delen kan ha egne innholdskoder, så du er riktig at Base-64 er mulig. ndash brianmearns 28 mar 13 kl 13:20 Ditt svar 2017 Stack Exchange, Inc5 Innholdsoverførings-kodingsoverskriftsfeltet Mange innholdstyper som med fordel kan transporteres via e-post, representeres i sitt naturlige format som 8-biters tegn eller binær data. Slike data kan ikke overføres over 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 omkoding av slike data til et 7-biters kortlinjeprogram. Dette dokumentet angir at slike kodinger vil bli indikert av et nytt overskriftsfelt Content-Transfer-Encoding. Feltet Content-Transfer-Encoding brukes til å indikere typen 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 mulig å etablere en enkelt Content-Transfer-Encoding-mekanisme. Det er en avvei mellom ønsket om en kompakt og effektiv koding av i stor grad binære data og ønsket om lesbar koding av data som hovedsakelig er, men ikke helt, 7-bits data. Av denne grunn er minst to kodende mekanismer nødvendige: en lesbar koding og en tett koding. Feltet Content-Transfer-Encoding er utformet for å angi en inverterbar kartlegging mellom den opprinnelige representasjonen av en datatype og en representasjon som kan utveksles lett ved hjelp av 7-bits posttransportprotokoller, som de som er definert av RFC 821 (SMTP). Dette feltet er ikke definert av noen tidligere standard. Feltverdien er et enkelt token som angir typen koding, som oppført nedenfor. Formelt: Disse verdiene er ikke saksfø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 feltet Innholdsoverskrift-koding ikke er tilstede. Verdiene 8bit, 7bit og binær betyr at NO-koding har blitt utført. Imidlertid er de potensielt nyttige som indikasjoner på typen av data som finnes i objektet, og derfor av typen koding som kanskje må utføres 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 det kan være ikke-ASCII-tegn (oktetter med høyordensbitssettet). Binær 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 en annen 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 bithastighet annet enn 7-bit, må den aktuelle bitbredde Content-Transfer-Encoding token brukes (for eksempel 8bit for ukoden 8 bit bred data). Hvis kroppen inneholder binære data, må binær Content-Transfer-Encoding token brukes. Forskjellen 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. Klare merking vil imidlertid ha stor verdi for gateways mellom fremtidige posttransportsystemer med ulik evne til å transportere data som ikke oppfyller restriksjonene for RFC 821-transport. Fra publiseringen av dette dokumentet finnes det ingen standardiserte Internett-transporter som det er legitimt å inkludere ukodede 8-bits eller binære data i postlegemer. Dermed er det ingen omstendigheter der 8bit eller binær Content-Transfer-Encoding faktisk er lovlig på Internett. Hvis imidlertid 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 bruker denne mekanismen. De fem verdiene som er definert for feltet Content-Transfer-Encoding, impliserer ingenting om innholdstypen annet enn algoritmen som den ble kodet for, eller transportsystemkravene hvis de ikke er kodet. Implementatorer kan om nødvendig definere nye Content-Transfer-Encoding-verdier, men må bruke en x-token, som er et navn prefikset av X - for å indikere sin ikke-standardstatus, f. eks. Content-Transfer-Encoding: x-my-new-koding. I motsetning til innholdstyper og undertyper er imidlertid opprettelsen av nye Content-Transfer-Encoding-verdier eksplisitt og sterkt motløs, da det antas å hindre interoperabilitet med liten potensiell fordel. Deres bruk 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 kroppen av meldingen. Hvis et overskriftsfelt Content-Transfer-Encoding vises som en del av en kroppsdelingsoverskrift, gjelder den bare for kroppens kroppsdel. Hvis en enhet er av typen multipart eller melding, er Content-Transfer-Encoding ikke tillatt å ha noen annen verdi enn en bitbredde (for eksempel 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 nettverksstandardbit-ordren (big endian), der de tidligere bitene i en strøm blir høyere - Bestille biter i en byte. En bitstrøm 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 utfylling i tilfelle av innholdet Type, som har en polstringsparameter. Kodemekanismene som er definert her, koder eksplisitt alle dataene i ASCII. For eksempel, anta at en enhet har headerfelter som: Dette burde 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 . I de følgende avsnittene defineres 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å uttrykkelig motet. Visse innholdsoverførings-kodingsverdier kan bare brukes på bestemte innholdstypene. Spesielt er det eksplisitt forbudt å bruke andre kodinger enn 7bit, 8bit eller binær med et hvilket som helst innholdstype som rekursivt inneholder andre innholds-typefelter, spesielt flertall 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. MERK OM INNKODE BEGRENSNINGER: Selv om forbudet mot å bruke innholdsoverførings-kodinger på data av typen multipart eller melding kan virke altfor begrensende, er det nødvendig å forhindre nestede kodinger, hvor data sendes gjennom en kodingsalgoritme flere ganger, og må være dekodes flere ganger for å bli korrekt sett. Nestede kodinger legger til betydelig kompleksitet for brukeragenter: bortsett fra de åpenbare effektivitetsproblemer med slike flere kodinger, kan de skjule den grunnleggende strukturen i en melding. Spesielt kan de innebære at flere dekodingsoperasjoner er nødvendige for å finne ut hvilke typer objekter en melding inneholder. Forbyende nestede kodinger kan komplisere jobben til bestemte postgateways, men dette virker mindre av et problem enn effekten av nestede kodinger på brukeragenter. MERK OM FORHOLDET MELLOM INNHOLDSTYPE OG INNHOLD-OVERFØRSKODE Det kan virke som innholdsoverføringskodingen kan utledes av egenskapene til innholdstypen som skal kodes, eller i det minste at visse Content-Transfer-Encodings kan bli mandatt til bruk med bestemte innholdstypene. Det er flere grunner til at dette ikke er tilfelle. For det første, gitt de ulike transporttyper som brukes til post, kan enkelte kodinger være hensiktsmessige for enkelte Innholdstypekombinasjoner og ikke for andre. (For eksempel i en 8-bitstransport ville det ikke være nødvendig med koding for tekst i visse tegnsett, mens slike kodinger er tydeligvis kreves for 7-bits SMTP.) For det andre kan enkelte innholdstyper kreve forskjellige typer overføringskoding under forskjellige forhold. For eksempel kan mange PostScript-legemer bestå av korte linjer med 7-bits data og krever derfor lite eller ingen koding. Andre PostScript-kropper (spesielt de som bruker binær kodingsmekanisme for nivå 2 PostScripts) kan bare være rimelig representert ved hjelp av en binær transportkoding. Til slutt, siden Content-Type er ment å være en åpen spesifikasjonsmekanisme, kombinerer streng spesifikasjon av en tilknytning mellom innholdstypene og kodene effektivt spesifikasjonen til en applikasjonsprotokoll med en bestemt lavere nivåtransport. Dette er ikke ønskelig siden utviklerne av et innholdstype ikke skal være oppmerksomme på alle transportene som er i bruk og hva deres begrensninger er. MERK OM TRANSLATING ENCODINGS Kodene som kan skrives ut og base64 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 du konverterer fra sitert utskrift til base64, må en linjeskift konverteres til en CRLF-sekvens. På samme måte bør en CRLF-sekvens i base64-data konverteres til et sitat-utskriftslinjeskift, men KUN når du konverterer tekstdata. MERK OM KANONISK KODIFIKASJONSMODELL: Det var litt forvirring i tidligere utkast til dette notatet om modellen for når e-postdata skulle konverteres til kanonisk form og kodet, og spesielt hvordan denne prosessen ville påvirke behandlingen av CRLF, gitt at Representasjonen av nye linjer varierer sterkt fra system til system. Av denne grunn presenteres en kanonisk modell for koding som vedlegg H. 5.1 Sitert-Utskrivbar Content-Transfer-Encoding Den Quoted-Printable-kodingen er ment å representere data som i stor grad består av oktetter som tilsvarer utskrivbare tegn i ASCII-tegnsettet. Den koder for dataene på en slik måte at de resulterende oktettene ikke vil bli endret ved posttransport. Hvis dataene som er kodet, hovedsakelig er ASCII-tekst, forblir den kodede dataformen i stor grad gjenkjennelig av mennesker. En kropp som er helt ASCII, kan også være kodet i Quoted-Printable for å sikre integriteten til dataene hvis meldingen skal passere gjennom en tegn-oversetter, og-linje-innpakning gateway. I denne kodingen skal oktetter bli representert som bestemt av følgende regler: Regel 1: (Generell 8-bit representasjon) Enhver oktett, unntatt de som angir en linjeskift i henhold til newline-konvensjonen for den kanoniske form av dataene som er kodet, kan representeres av en etterfulgt av en tosifret heksadesimal representasjon av oktetsverdien. 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 på kvitteringen. Således kan for eksempel verdien 12 (ASCII form-feed) representeres av 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. Regel 2: (Bokstavelig fremstilling) Oktetter med desimalverdier på 33 til 60 inklusive, og 62 til og med 126, kan være representert som ASCII-tegnene som tilsvarer de oktetter (EXCLAMATION POINT TIL MINDRE THAN, og ellers henholdsvis TILDE ). Regel 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ølgelig følges på den linjen med et skrivbart tegn. Spesielt kan en på slutten av en kodet linje, som angir en myk linjeskift (se regel 5), følge et eller flere TAB (HT) eller SPACE tegn. Det følger at en oktett med verdi 9 eller 32 som vises på enden av en kodet linje, må være representert i henhold til regel 1. Denne regelen er nødvendig fordi enkelte MTAer (Message Transport Agents, programmer som transporterer meldinger fra en bruker til en annen, eller utfører en del av slike overføringer) er kjent for å kaste tekstlinjer med SPACE, og andre er kjent for å fjerne hvite mellomrom fra slutten av en linje. Når du avkoder en Quoted-Printable-kropp, må det derfor slettes ethvert etterfølgende hvitt mellomrom på en linje, da det nødvendigvis har blitt lagt til av mellomtransportmidler. Regel 4 (linjeskift) En linjeskift i en tekstdel, uavhengig av hva dens representasjon følger den kanoniske representasjonen av dataene som er kodet, må representeres av en linjeskift (RFC 822), som er en CRLF-sekvens, i Quoted-Printable encoding. Hvis isolerte CR'er og LF'er, 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, 0A0D og 0D0A-notasjonene. Legg merke til at mange implementeringer kan velge å kodes lokal representasjon av ulike innholdstyper direkte. Spesielt kan dette gjelde for vanlig tekstmateriale på systemer som bruker newline-konvensjoner enn CRLF-avgrensere. En slik implementering er tillatt, men genereringen av linjeskift må generaliseres for å ta hensyn til tilfellet der alternative representasjoner av newline-sekvenser blir brukt. Regel 5 (myke linjeskift) 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 av linjen er en enkelt ukodet 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 brukeren middel. 76 tegngrensen teller ikke den etterfølgende CRLF, men teller alle andre tegn, inkludert eventuelle tegn. Siden bindestrekkarakteren (-) er representert som seg selv i den kodede kodingen, må det tas hensyn når man skal innkapslere en citerbar utskriftskodet kropp i en flerartsenhet for å sikre at innkapslingsgrensen ikke vises overalt i den kodede kroppen . (En god strategi er å velge en grense som inkluderer en tegnsekvens som for eksempel aldri kan vises i en sitat-utskrivbar kropp. Se definisjonen av flerartede meldinger senere i dette dokumentet.) MERK: Den angitte utskriftsbare kodingen representerer noe av en kompromiss mellom lesbarhet og pålitelighet i transport. Kropper kodet med den kodede utskrivbare kodingen vil fungere pålitelig over de fleste mail gateways, men fungerer kanskje ikke perfekt over noen få gateways, spesielt de som involverer oversettelse til EBCDIC. (I teorien kan en EBCDIC-gateway dekode en citerbar utskriftslegem og omkode den med base64, men slike gateways eksisterer ikke.) Et høyere konfidensnivå tilbys av base64 Content-Transfer-Encoding. En måte å få rimelig pålitelig transport gjennom EBCDIC gateways er å også sitere ASCII-tegnene i henhold til regel 1. Se vedlegg B for mer informasjon. Fordi citerte utskriftsdata antas å være line-orientert, kan det forventes at pausene mellom linjene med sitatte utskriftsdata kan endres i transport, på samme måte som vanlig tekstpost alltid har blitt endret i Internett-post 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 utskrivbare 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. Koderings - og dekodningsalgoritmene er enkle, men de kodede dataene er konsekvent bare omtrent 33 prosent større enn de ukodede dataene. Denne kodingen er basert på den som brukes i Privacy Enhanced Mail-applikasjoner, som definert i RFC 1113. Basen64-kodingen er tilpasset fra RFC 1113, med en endring: base64 eliminerer mekanismen for innebygd klar tekst. En 65-tegns undergruppe av US-ASCII brukes, slik at 6 biter kan representeres pr. Utskrivbart tegn. (Den ekstra 65. tegn,, brukes til å betegne en spesiell behandlingsfunksjon.) MERK: Denne delmengden har den viktige egenskapen at 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 base85-kodingen som er spesifisert som en del av Nivå 2 PostScript, deler ikke disse egenskapene, og oppfyller dermed ikke overføringsbehovene en binær transportkoding for post må møte. Kodingsprosessen representerer 24-biters grupper av inngangsbiter som utgangsstrenger av 4 kodede tegn. Ved å gå fra venstre til høyre, dannes en 24-bits inngangsgruppe ved å sammenkoble 3 8-bits inngangsgrupper. Disse 24 bitene blir deretter behandlet som 4 sammenkoblede 6-biters grupper, som hver er oversatt til et enkelt siffer i base64-alfabetet. Når du koder litt strø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 byten, 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. Karakteren referert til av indeksen er plassert i utgangsstrengen. Disse tegnene, 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 (f. eks. . Tabell 1: Base64-alfabetet Utgangsstrømmen (kodet bytes) 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 å dekode programvare. I base64-data angir tegn andre enn de i tabell 1, linjeskift og annet hvitt mellomrom trolig en overføringsfeil, om hvilken en advarselsmelding eller til og med en avvisning av meldingen kan være hensiktsmessig under noen omstendigheter. Spesiell behandling utføres hvis færre enn 24 biter er tilgjengelige på slutten av dataene som er kodet. En fullkodingskvantum er alltid ferdig på enden av en kropp. 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. Utgående karakterposisjoner 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) sluttkvantum av kodende inngang er et integrert flertall på 24 bits her, den endelige enheten av kodet utgang vil være et integrert flertall på 4 tegn uten utfylling, (2) sluttkvantum av kodende inngang er nøyaktig 8 bits her, vil den endelige enheten av kodet utgang være to tegn etterfulgt av to utfyllingsfigurer, eller (3) det endelige kvantet av kodingsinngang er nøyaktig 16 bits her , vil den endelige enheten med kodet utgang være tre tegn etterfulgt av ett utfyllings tegn. Det må tas hensyn til å bruke de riktige oktene for linjeskift hvis base64-kodingen blir brukt direkte på tekstmateriale som ikke er konvertert til kanonisk form. Spesielt bør tekstlinjebrudd konverteres til CRLF-sekvenser før base64-koding. Det viktige å merke seg er at dette kan gjøres direkte av koderen i stedet for i et tidligere kanonicaliseringstrinn i noen implementeringer. MERK: Det er ikke nødvendig å bekymre seg for å sitere synlige innkapslingsgrenser innenfor base64-kodede deler av flerartsenheter fordi ingen bindestrekkarakterer blir brukt i base64-kodingen. Innholdsoverføring-koding: 8bit lagt feil til overskrifter av flerparts-e-post med inline-bilder Når Når du svarer på en HTML-melding til listen, blir den opprinnelig citerte meldingen gjengitt som både den korrekte tekstversjonen av meldingen, etterfulgt av en ren tekstvisning av HTML-kilden til HTML-versjonen av meldingen, og en ren tekstbase64-koding av eventuelle inlinebilder. Denne oppførselen er dokumentert så langt i meldinger sendt fra Postboks 3.05 til Mac OS X, med inline-bildet som profilbildet til avsenderen fra adresseboken, og HTML-meldingen er ellers grunnleggende formatering. Bekreftes hvis dette er spesifikt for dette e-postprogrammet. babbage Kredittattribusjon: babbage kommenterte 8. september 2012 kl. 9:40. Sitat HTML-meldinger gjengis inline som ren tekstversjoner av kode. Inlinebilder gjengis som ren tekstversjoner av kode Bekreftet at dette problemet ikke forekommer hvis jeg slår av Postboksinnstillingen , Ta med kontaktbilder for hver deltaker når du oppsummerer, noe som fører til en del i HTML-e-posten til flere bilder av imagejpeg: Så dette problemet er sannsynligvis begrenset til når et inline-bilde er inkludert i en gruppemeddelelse. babbage Kredittattribusjon: babbage kommenterte 8. september 2012 klokka 9:51. Bekreftet at det ikke er noe problem å sende en melding til listen med en standard jpg-fil som et vedlegg, i stedet for inline. (Det kan fortsatt vises inline, avhengig av e-postklienten.) Bekreftet et inlinebilde i den opprinnelige meldingen resulterer i at vedlegget HTML og imagejpeg blir gjengitt som vanlig tekst i meldingen sendt ut, så dette er ikke begrenset til meldingssvar. babbage Credit Attribution: babbage kommenterte 8. september 2012 kl 09:59. Problem oppstår med delen av ogmailinglisttransport. inc i c. linje 908 (linjenummer kan ha endret seg på grunn av arbeidet mitt i filen), i delen som begynner: Dette er delen av koden som synes å forårsake dette problemet. Emails med inline-bilder har overskrifter som: Innholdstype: multipartmixed boundaryDrupal-OG-Mailinglist - 1143534839 charsetUTF-8 Emails uten problem har ikke boundaryDrupal-OG-Mailinglist - 1143534839 og har i stedet noe som: Innholdstype: multipartmixed grense ------------ 050107000403000604050201 charsetUTF-8 Selvfølgelig vil den eksakte naturen av grensen sannsynligvis være noe å sende e-postklientspesifikke, men det synes å begrense det til et problem i opprettelsen av en ny MIME-enhet som angitt ovenfor. babbage Credit Attribution: babbage kommenterte 8. september 2012 kl 10:19 Hmm. E-post med dette problemet har følgende headerstruktur: Det vil si, den primære heisen sier Content-Transfer-Encoding er 8bit (og UTF-8), men så sier alle underavdelinger at det er 7bit (og ISO-8859-1, i saken av disse meldingene). Jeg tenker at 8bit7bit uoverensstemmelsen kan være et problem her babbage Kredittattribusjon: babbage kommenterte 8. september 2012 klokka 21:10 Hvis et overskriftsfelt Content-Transfer-Encoding vises som en del av en meldingsoverskrift, gjelder den for hele kroppen av meldingen . Hvis et overskriftsfelt Content-Transfer-Encoding vises som en del av en kroppsdelingsoverskrift, gjelder den bare for kroppens kroppsdel. Hvis en enhet er av typen multipart eller melding, er Content-Transfer-Encoding ikke tillatt å ha noen annen verdi enn en bitbredde (for eksempel 7bit, 8bit, etc.) eller binær. Derfor overstyrer tilstedeværelsen av en eksplisitt 8bit-spesifikasjon i overskriften 7bit-spesifikasjonene i flerpartsmeldingen. Selv fraværet av Content-Transfer-Encoding i header ville unngå dette problemet, både fordi da kroppsdelspesifikasjonene skulle gjelde, men også fordi det samme dokumentet angir 7bit er standard hvis en koding ikke er spesifisert.

No comments:

Post a Comment