Jag skriver en enkel webbserver i python som tillåter en användare att ladda upp en fil med multipartformdata. Såvitt jag kan säga, ska multipart MIME-data vara linjebaserad. Till exempel måste gränsen vara i början av en linje. Jag kan inte räkna ut hur binär data hanteras i detta avseende. Min klient (Firefox) kodar inte den i 7bit ASCII eller något, det är bara rå binär data som den skickar. Delar den data i rader på godtyckliga platser Finns det en maxlinjelängd som anges för multipartdata Ive försökte titta igenom RFC för multipartformdata, men hittade inte någonting. frågade mar 27 13 kl 16:54 Efter att ha grävt igenom RFC: erna, tror jag att jag äntligen fick allt rakt i mitt huvud. Kroppsdelarna (dvs. kroppsinnehållet i en enskild del i ett multipartmeddelande) behöver endast vara linjebaserade, eftersom gränsen vid delens ände börjar med en CRLF. Men annars behöver inte data vara linjebaserade, och om innehållet råkar ha linebreaker i det, finns det ingen maximal avstånd mellan dem, och de behöver inte heller bli undanflyttade i alla fall (såvida inte Content-Transfer - Kodning är citerad-sträng). De 7-bitars, 8-bitars - och binäralternativen för Content-Transfer-Encoding indikerar inte faktiskt att någon kodning har gjorts på data (och därför behöver ingen kodning ångras), de betyder bara att indikera typen av data du kan förvänta dig att se i kroppsdelen. Vad jag verkligen kom fram i min dåligt uttryckta fråga var hur man läserbuffert data från uttaget så att jag kunde se till att jag fångade gränsen och utan att behöva ha en godtycklig stor buffert (t. ex. om det inte hänt några linjebrytningar i innehållet, och så en läsning slutade att buffra hela saken). Vad jag slutade göra var att buffra från uttaget med en läslinje med maximal längd, så bufferten skulle aldrig vara längre än den, men skulle också se till att avsluta om en linebreak uppstod. Detta säkerställde att när gränsen kom (efter en CRLF) skulle den vara i början av bufferten. Jag var tvungen att göra lite extra monkeying runt för att säkerställa att jag inte inkluderade den slutliga gränsvärdet för den faktiska kroppens innehåll, eftersom enligt RFC krävs det innan gränsen, och därför inte en del av innehållet i sig. svarat den 5 april kl 12:02 Försök att granska RFC 2045. Vanligtvis omvandlas binärt innehåll till BASE64 av din ansökan och ingår i multibildmeddelandet med Content-Transfer-Encoding. Base64. Det finns andra mekanismer för att överföra binär data, men det är ganska vanligt. Binär data omvandlas till oktetter och chunkas ut i strängar med arvslängder (beroende på kodningsvarianten - se BASE64-länken ovan). Den mottagande applikationen avkodar sedan den i den ursprungliga binära innehållet. Jag är inte en pythonprogrammerare, men jag skulle bli förvånad över att du verkligen behövde koda något av detta själv. Jag misstänker att det finns förbyggda python biblioteksfunktioner att göra det här för dig. svarat mar 27 13 på 17:43 Tack, jag tittade på en annan RFC som inte var så informativ. Jag hittade också RFC 2046 som specifikt definierar flera delade meddelanden i avsnitt 5. Notera att det är lite subtilitet i dessa RFC: er som genom mig: det står att multipartmeddelanden inte kan ha kodningar annat än 7-bitars, 8-bitars och binära (dvs inte bas-64). Men det fortsätter att säga att de enskilda delarna inom flera delar kan ha egna innehållskodningar, så du är korrekt att Base-64 är möjlig. ndash brianmearns 28 mar 13 kl 13:20 Ditt svar 2017 Stack Exchange, Inc5 Fältet Content-Transfer-Encoding Header Många innehållstyper som med fördel kan transporteras via e-post representeras i sitt naturliga format som 8-bitars tecken eller binär data. Sådana data kan inte överföras via några transportprotokoll. Till exempel begränsar RFC 821 postmeddelanden till 7-bitars US-ASCII-data med 1000 teckenlinjer. Det är därför nödvändigt att definiera en standardmekanism för omkodning av sådan data till ett 7-bitars kortlinjeprogram. Detta dokument anger att sådana kodningar kommer att anges med ett nytt rubrik för innehållsöverföring och kodning. Fältet Content-Transfer-Encoding används för att ange vilken typ av omvandling som har använts för att representera kroppen på ett acceptabelt sätt för transport. Till skillnad från innehållstyp är en spridning av innehållsöverföringskodningsvärden oönskad och onödig. Det är dock inte möjligt att upprätta en enda Content-Transfer-Encoding-mekanism. Det finns en avvägning mellan önskan om en kompakt och effektiv kodning av i stor utsträckning binär data och önskan om en läsbar kodning av data som mestadels, men inte helt, 7-bitars data. Av detta skäl är minst två kodningsmekanismer nödvändiga: en läsbar kodning och en tät kodning. Fältet Content-Transfer-Encoding är utformat för att ange en inverterbar kartläggning mellan den inbyggda representationen för en typ av data och en representation som enkelt kan utbytas med hjälp av protokoll för 7 bitars posttransport, såsom de som definieras av RFC 821 (SMTP). Det här fältet har inte definierats av någon tidigare standard. Fältet värde är en enda token som anger typen av kodning, som anges nedan. Formellt: Dessa värden är inte skiftlägeskänsliga. Det vill säga, Base64 och BASE64 och bAsE64 är alla likvärdiga. En kodningstyp på 7BIT kräver att kroppen redan finns i en sju-bitars e-postberedning. Detta är standardvärdet - det vill säga Content-Transfer-Encoding: 7BIT antas om fältet Content-Transfer-Encoding header inte är närvarande. Värdena 8bit, 7bit och binär innebär att NO-kodning har utförts. De är dock potentiellt användbara som indikationer på typen av data som ingår i objektet, och därför av typen av kodning som kan behöva utföras för överföring i ett visst transportsystem. 7bit betyder att data är alla representerade som korta rader av US-ASCII-data. 8bit betyder att linjerna är korta, men det kan finnas icke-ASCII-tecken (oktetter med högorderbitssatsen). Binär betyder att inte bara ASCII-tecken kan vara närvarande, utan också att linjerna inte nödvändigtvis är tillräckligt små för SMTP-transport. Skillnaden mellan 8bit (eller något annat tänkbart bitbreddstoken) och binärt token är att binär inte kräver att man följer några gränser på linjelängd eller SMTP-CRLF-semantiken, medan bitbreddsbitarna kräver sådan vidhäftning. Om kroppen innehåller data i någon annan bitbredd än 7-bitar måste den lämpliga bitbreddsinnehållsöverförings-kodningstoken användas (t ex 8bit för okodad 8 bitars bred data). Om kroppen innehåller binär data måste binär Content-Transfer-Encoding token användas. Skillnaden mellan innehållsöverföring och kodningsvärdena för binär, 8bit etc. kan verka oväsentlig, eftersom de inte alls betyder ingen, det vill säga det har inte gjorts någon kodning av data för transport. Tydlig märkning kommer dock att vara av enormt värde för gateways mellan framtida posttransportsystem med olika möjligheter att transportera data som inte uppfyller restriktionerna för RFC 821-transport. Vid publiceringen av detta dokument finns inga standardiserade Internettransporter för vilka det är legitimt att inkludera okodad 8-bitars eller binär data i postkroppar. Det finns således inga omständigheter där 8bit eller binär Content-Transfer-Encoding faktiskt är lagligt på Internet. Om emellertid 8-bitars eller binär posttransport blir verklighet i Internet-post, eller när det här dokumentet används tillsammans med någon annan 8-bitars eller binär-kapabel transportmekanism, bör 8-bitars eller binära kroppar märkas som sådan använder denna mekanism. De fem värdena som definierats för fältet Content-Transfer-Encoding innebär ingenting om innehållstypen annat än den algoritm som den kodades för eller kraven på transportsystemet om de inte är kodade. Implementatorer kan vid behov definiera nya värden för innehållsöverföring och kodning, men måste använda en x-token, vilket är ett namn prefixed av X - för att ange sin icke-standardstatus, t. ex. Content-Transfer-Encoding: x-my-new-kodning. I motsats till innehållstyper och undertyper är skapandet av nya innehållsöverförings-kodningsvärden emellertid uttryckligen och kraftigt avskräckt, eftersom det verkar troligt att interoperabiliteten med liten potentiell nytta störs. Deras användning är endast tillåtet som ett resultat av ett avtal mellan samarbetsvilliga användaragenter. Om ett rubrik för innehållsöverföring och kodning visas som en del av en meddelandehuvud gäller den för hela meddelandets kropp. Om ett rubrik för innehållsöverföring och kodning visas som en del av en kroppsdelhuvud, gäller den bara för kroppens kroppsdel. Om en enhet är typ av multipart eller meddelande, tillåts Content-Transfer-Encoding inte ha något annat värde än en bitbredd (t ex 7bit, 8bit, etc.) eller binärt. Det bör noteras att e-post är karaktärsinriktat, så att mekanismerna som beskrivs här är mekanismer för kodning av godtyckliga bitströmmar, inte bitströmmar. Om en bitström ska kodas via en av dessa mekanismer måste den först konverteras till en 8-bit byte-ström med hjälp av nätverksstandardbitordningen (big endian), där de tidigare bitarna i en ström blir de högre ordning bitar i en byte. En bitström som inte slutar vid en 8-bitars gräns måste vaddas med nollor. Detta dokument tillhandahåller en mekanism för att notera tillsatsen av sådan padding vid tillämpning av Innehållstyp, som har en padding-parameter. Kodningsmekanismerna definieras här uttryckligen kodar alla data i ASCII. Antag exempelvis att en enhet har rubrikfält som: Detta borde tolkas så att kroppen är en base64 ASCII-kodning av data som ursprungligen var i ISO-8859-1 och kommer att vara i den teckenuppsättningen igen efter avkodning . Följande avsnitt definierar de två standardkodningsmekanismerna. Definitionen av nya innehållsöverförings-kodningar är uttryckligen avskräckt och bör endast ske när det är absolut nödvändigt. All innehållsöverföringskodnings namnrymd förutom den som börjar med X - är uttryckligen reserverad för IANA för framtida användning. Privata avtal om innehållsöverföring-kodningar är också uttryckligen avskräckta. Vissa Content-Transfer-Encoding-värden får endast användas på vissa innehållstyp. I synnerhet är det uttryckligen förbjudet att använda andra kodningar än 7bit, 8bit eller binärt med vilken innehållstyp som helst, som rekursivt innehåller andra innehålls-typfält, särskilt multipart och meddelandeinnehållstyper. Alla kodningar som önskas för kroppar av typ multipart eller meddelande måste göras på den innersta nivån genom kodning av den faktiska kroppen som behöver kodas. ANMÄRKNING FÖR ANVÄNDNINGSBEGRÄNSNINGAR: Även om förbud mot att använda innehållsöverförings-kodningar på data av typen multipart eller meddelande kan tyckas alltför begränsande, är det nödvändigt att förhindra kapslade kodningar, i vilka data skickas genom en kodningsalgoritm flera gånger och måste vara avkodas flera gånger för att kunna ses korrekt. Nestade kodningar ger avsevärd komplexitet till användaragenter: bortsett från de uppenbara effektivitetsproblemen med sådana multipla kodningar kan de dölja den grundläggande strukturen i ett meddelande. I synnerhet kan de innebära att flera avkodningsoperationer är nödvändiga för att bara ta reda på vilka typer av föremål ett meddelande innehåller. Förbud mot kapslade kodningar kan komplicera jobbet för vissa mailgateways, men det verkar vara mindre av ett problem än effekten av kapslade kodningar på användaragenter. ANMÄRKNING TILL RELATIONSHEN MELLAN INNEHÅLLSTYP OCH INNEHÅLLSÖVERFÖRING Det kan tyckas att innehållsöverföringskodningen kan härledas från egenskaperna hos innehållstypen som ska kodas eller åtminstone att vissa Content-Transfer-Encodings kan vara mandat för användning med specifika innehållstyp. Det finns flera anledningar till varför detta inte är fallet. För det första, med tanke på de olika typerna av transporter som används för post, kan vissa kodningar vara lämpliga för vissa innehållstypkombinationskombinationer och inte för andra. (Till exempel i en 8-bitars transport behövs ingen kodning för text i vissa teckenuppsättningar, medan sådana kodningar är tydligt nödvändiga för 7-bitars SMTP.) För det andra kan vissa innehållstyper kräva olika typer av överföringskodning under olika omständigheter. Till exempel kan många PostScript-kroppar helt och hållet bestå av korta rader med 7-bitars data och kräver därför liten eller ingen kodning. Andra PostScript-kroppar (speciellt de som använder binär kodningsmekanism för nivå 2 PostScripts) kan endast vara rimligt representerade med en binär transportkodning. Slutligen, eftersom innehålls-typ är avsett att vara en mekanism för öppen specifikation, strängar specifikationen av en koppling mellan innehållstyp och kodningar effektivt specifikationen för ett applikationsprotokoll med en specifik lägre nivåtransport. Det här är inte önskvärt eftersom utvecklarna av en Content-Type inte borde behöva vara medvetna om alla transporter som används och vad deras begränsningar är. ANMÄRKNING FÖR ÖVERFÖRING AV UPPGIFTER De citerade och baserade kodningarna är utformade så att konvertering mellan dem är möjlig. Det enda problemet som uppkommer vid en sådan omvandling är hanteringen av raster. När man konverterar från citerad-skrivbar till base64 måste en radbrytning omvandlas till en CRLF-sekvens. På samma sätt bör en CRLF-sekvens i bas64-data omvandlas till en citationstryckbar radbrytning, men ENDAST när man konverterar textdata. ANMÄRKNING PÅ KANONISK KODIFIKATIONSMODELL: Det var viss förvirring i tidigare utkast till detta notat om modellen för när e-postdata skulle omvandlas till kanonisk form och kodas, och i synnerhet hur denna process skulle påverka behandlingen av gränsvärdena, eftersom Representationen av nya linjer varierar kraftigt från system till system. Av denna anledning presenteras en kanonisk modell för kodning som bilaga H. 5.1 Avskrivningsbar innehållsöverföring-kodning Den citerade-skrivbara kodningen är avsedd att representera data som i stor utsträckning består av oktetter som motsvarar utskrivbara tecken i ASCII teckenuppsättningen. Det kodar data så att de resulterande oktetterna inte kommer att modifieras via posttransport. Om data som kodas är mestadels ASCII-text, förblir den kodade formen av data i stor utsträckning igenkänns av människor. En kropp som är helt ASCII kan också kodas i Quoted-Printable för att säkerställa integriteten av data om meddelandet ska passera genom en tecken-översättande, och eller en linjeomslagsportway. I denna kodning ska oktetterna representeras enligt följande regler: Regel 1: (Allmänt 8-bitars representation) Varje oktett, med undantag för de som anger en radbrytning enligt nylinjekonventionen för den kanoniska formen av data som kodas, kan representeras av en följd av en tvåsiffrig hexadecimal representation av oktetsvärdet. Siffrorna i det hexadecimala alfabetet, för detta ändamål, är 0123456789ABCDEF. Stor bokstäver måste användas när du skickar hexadecimal data, men en robust implementering kan välja att känna igen små bokstäver vid mottagandet. Således kan till exempel värdet 12 (ASCII-formmatning) representeras av 0C, och värdet 61 (ASCII EQUAL SIGN) kan representeras av 3D. Förutom när följande regler tillåter en alternativ kodning är denna regel obligatorisk. Regel 2: (Bokstavsrepresentation) Okteter med decimala värden av 33 till 60 inklusive, och 62 till 126 inklusive, kan representeras som ASCII-tecknen som motsvarar dessa oktetter (EXCLAMATION POINT TILL MINDRE ÄN, OCH ÄNDRE ÄN TILL TILLDE ). Regel 3: (White Space) Octeter med värden på 9 och 32 kan representeras som ASCII TAB (HT) respektive SPACE-tecken, men MÅSTE INTE representeras så i slutet av en kodad linje. Eventuella TAB (HT) eller SPACE-tecken på en kodad linje MÅSTE följas på den linjen med en utskrivbar tecken. I synnerhet kan en i slutet av en kodad linje, som indikerar en mjuk linjebrytning (se regel 5) följa ett eller flera TAB (HT) eller SPACE-tecken. Av detta följer att en oktett med värdet 9 eller 32 som visas i slutet av en kodad linje måste representeras enligt regel 1. Denna regel är nödvändig eftersom vissa MTA (Message Transport Agents, program som transporterar meddelanden från en användare till en annan, eller utför en del av sådana överföringar) är kända för att kasta textlinjer med RUMMAR, och andra är kända att ta bort vita mellanslagstegn från slutet av en rad. När du avkodar en Quoted-Printable-kropp måste därför eventuellt efterföljande vitt utrymme på en raderas raderas, eftersom det nödvändigtvis kommer att ha lagts till av intermediära transportmedel. Regel 4 (Line Breaks) En radbrytning i en textkroppsdel, oberoende av vad dess representation följer den kanoniska representationen av data som kodas, måste representeras av en radbrytning (RFC 822), vilken är en CRLF-sekvens i Den citerade-skrivbara kodningen. Om isolerade CR och LF, eller LF CR och CR LF-sekvenser får visas i binär data enligt den kanoniska formen, måste de representeras med respektive 0D, 0A, 0A0D och 0D0A-notationerna. Observera att många implementeringar kan välja att koda lokal representation av olika innehållstyper direkt. I synnerhet kan detta gälla för vanligt textmaterial på system som använder nya linjekonventioner än CRLF-avgränsare. En sådan implementering är tillåten, men genereringen av radbrytningar måste generaliseras för att redogöra för fallet där alternativa representationer av newlinesekvenser används. Regel 5 (Mjuka linjebrott) Den citerade-skrivbara kodningen BEFORDRAR att kodade linjer inte ska vara längre än 76 tecken. Om längre rader ska kodas med den kodade kvittningen kan man använda mjuka radbrytningar. Ett lika tecken som den sista tecknen på en kodad linje indikerar en sådan icke-signifikant (mjuk) radbrytning i den kodade texten. Således om linjens raka form är en enda okodad rad som säger: Detta kan representeras i den kvoterade skrivbara kodningen, eftersom detta ger en mekanism med vilken långa linjer kodas på ett sätt som återställs av användaren ombud. 76-tecknsgränsen räknar inte den efterföljande gränsvärdet, men räknar alla andra tecken, inklusive eventuella lika tecken. Eftersom bindestreckskaraktären (-) representeras som sig själv i den kvoterade utskrivbara kodningen måste man ta hand om när man inkapslar en citationstryckbar kodad kropp i en multipart-enhet för att säkerställa att inkapslingsgränsen inte visas någonstans i den kodade kroppen . (En bra strategi är att välja en gräns som innehåller en teckenföljd, som aldrig kan visas i en citat som kan skrivas ut. Se definitionen av multipartmeddelanden senare i det här dokumentet.) OBS! Den citerade utskrivbara kodningen representerar något av en kompromissa mellan läsbarhet och tillförlitlighet i transporten. Kroppar som kodas med den citerade utskrivbara kodningen fungerar på ett tillförlitligt sätt över de flesta mailgateways, men kanske inte fungerar perfekt över några gateways, särskilt de som inbegriper översättning till EBCDIC. (I teorin kan en EBCDIC-gateway avkoda en citerad utskrivbar kropp och omkoda den med base64, men sådana gateways finns inte.) En högre grad av förtroende erbjuds av bas64 Content-Transfer-Encoding. Ett sätt att få rimligt pålitlig transport via EBCDIC-gateways är att även citera ASCII-tecknen enligt regel 1. Se bilaga B för mer information. Eftersom citerad utskrivbar data generellt antas vara linjeorienterad, kan det förväntas att rasterna mellan raderna av citerade utskrivbara data kan ändras i transport, på samma sätt som vanlig textpost alltid har ändrats i Internet-post när de passerar mellan system med olika newline-konventioner. Om sådana förändringar sannolikt utgör en korruption av data, är det förmodligen mer rimligt att använda bas64-kodningen snarare än den citerade utskrivbara kodningen. 5.2 Base64 Content-Transfer-Encoding Basen64 Content-Transfer-Encoding är utformad för att representera godtyckliga sekvenser av oktetter i en form som inte är mänskligt läsbar. Koderings - och avkodningsalgoritmerna är enkla, men kodade data är konsekvent endast cirka 33 procent större än de okodade data. Denna kodning baseras på den som används i Privacy Enhanced Mail-applikationer, enligt definitionen i RFC 1113. Basen64-kodningen är anpassad från RFC 1113, med en ändring: base64 eliminerar mekanismen för inbäddad klar text. En del av US-ASCII med 65 tecken används, vilket gör att 6 bitar kan representeras per utskrivbar tecken. (Den extra 65: e tecknen,, används för att beteckna en särskild bearbetningsfunktion.) OBS! Den här delmängden har den viktiga egenskapen att den representeras identiskt i alla versioner av ISO 646, inklusive US ASCII, och alla tecken i delmängden är också representerade identiskt i alla versioner av EBCDIC. Andra populära kodningar, såsom kodningen som används av UUENCODE-verktyget och bas85-kodningen som specificeras som en del av nivå 2 PostScript, delar inte dessa egenskaper och uppfyller således inte portabilitetskraven som en binär transportkodning för post måste uppfylla. Kodprocessen representerar 24-bitars grupper av ingångsbitar som utmatningssträngar med 4 kodade tecken. En 24-bitars ingångsgrupp bildas från vänster till höger genom att sammanlänka 3 8-bitars ingångsgrupper. Dessa 24 bitar behandlas sedan som 4 sammansatta 6-bitars grupper, vilka var och en är översatta till en enda siffra i bas64-alfabetet. Vid kodning av en bitström via bas64-kodningen, måste bitströmmen antas beställa med den mest signifikanta biten först. Det vill säga den första biten i strömmen blir högordningsbiten i den första bitmen, och den åttonde biten kommer att vara lågordningsbit i den första byten, och så vidare. Varje 6-bitars grupp används som ett index i en uppsättning 64 skrivbara tecken. Tecknet som refereras av indexet placeras i utmatningssträngen. Dessa tecken, som anges i tabell 1 nedan, väljs så att de är universellt representativa, och uppsättningen utesluter tecken med särskild betydelse för SMTP (t. ex. CR, LF) och de inkapslingsgränser som definieras i detta dokument (t. ex. . Tabell 1: Base64-alfabetet Utgångsströmmen (kodade byte) måste representeras i rader med högst 76 tecken vardera. Alla rader eller andra tecken som inte finns i Tabell 1 måste ignoreras genom avkodning av programvara. I base64-data anger andra tecken än de i tabell 1, radbrytningar och annat vitt utrymme troligen ett överföringsfel, om vilket ett varningsmeddelande eller till och med ett meddelandeförkastning kan vara lämpligt under vissa omständigheter. Särskild bearbetning utförs om färre än 24 bitar är tillgängliga i slutet av data som kodas. En fullständig kodande kvant är alltid avslutad i slutet av en kropp. När färre än 24 ingångsbitar är tillgängliga i en ingångsgrupp läggs nollbitar (till höger) för att bilda ett integrerat antal 6-bitarsgrupper. Utgående teckenpositioner som inte krävs för att representera aktuell inmatningsdata är inställda på tecknet. Eftersom alla bas64-ingångar är ett integrerat antal oktetter kan endast följande fall uppstå: (1) den slutliga kvanten av kodningsingång är en integrerad multipel av 24 bitar här, den slutliga enheten för kodad utmatning kommer att vara en integrerad multipel av 4 tecken utan kodning, (2) den slutliga kvanten av kodningsingången är exakt 8 bitar här, kommer den slutliga enheten för kodad utmatning att vara två tecken följt av två paddingtecken, eller (3) slutkvoten av kodningsingången är exakt 16 bitar här , kommer den slutliga enheten för kodad utmatning att vara tre tecken följt av en kodningstyp. Försiktighet måste göras för att använda rätt oktetter för radbrytningar om base64-kodning tillämpas direkt på textmaterial som inte har konverterats till kanonisk form. I synnerhet bör textlinjeavbrott konverteras till CRLF-sekvenser före bas64-kodning. Det viktiga att notera är att detta kan göras direkt av kodaren i stället för i ett tidigare kanonicaliseringssteg i vissa implementeringar. OBS! Det finns ingen anledning att oroa sig för att citera tydliga inkapslingsgränser i bas64-kodade delar av multipart-enheter eftersom inga bindestreckskaraktärer används i bas64-kodningen. Innehållsöverföring-kodning: 8bit läggs felaktigt till rubriker av multipart-e-postmeddelanden med inline-bilder När svara på ett HTML-meddelande till listan, görs det ursprungliga citerade meddelandet som både den rätta textversionen av meddelandet, följt av en ren textavgivning av HTML-källan till HTML-versionen av meddelandet och en vanlig textbaserad 64-kodning av några inlinebilder. Detta beteende dokumenteras hittills i meddelanden som skickas från Postbox 3.05 för Mac OS X, med inline-bilden som profilbild av avsändaren från adressboken och HTML-meddelandet är annars grundläggande formatering. Bekräftas om detta är specifikt för detta e-postprogram. Babbage Credit Attribution: Babbage kommenterade 8 september 2012 kl 9:40. Citerade HTML-meddelanden görs inline som vanliga textversioner av kod. Inline-bilder görs som vanliga textversioner av kod Bekräftade att problemet inte uppstår om jag stänger av postlådespreferensen Inkludera kontaktbilder för varje deltagare när du sammanfattar, vilket leder till en del i HTML-e-postadressen för imagejpeg: Så det här problemet är sannolikt begränsat till när en inline-bild ingår i ett gruppmeddelande. babbage Credit Attribution: babbage kommenterade 8 september 2012 kl 09:51 Bekräftat att det inte finns något problem att skicka ett meddelande till listan med en vanlig jpg-fil som en bilaga snarare än inline. (Det kan fortfarande visas inline, beroende på postklienten.) Bekräftat en inline-bild i det ursprungliga meddelandet resulterar i att HTML - och bildjpeg-bilagan blir gjord som vanlig text i meddelandet som skickas ut, så det här är inte begränsat till meddelandesvar. Babbage Credit Attribution: Babbage kommenterade 8 september 2012 kl 9:59. Problem uppstår med avsnittet og oglistningstransport. inc i c. rad 908 (radnummer kan ha ändrats på grund av mitt arbete i filen), i avsnittet som börjar: Det här är den del av koden som verkar orsaka detta problem. E-postmeddelanden med inline-bilder har rubriker som: Innehållstyp: multipartmixed boundaryDrupal-OG-Mailinglist - 1143534839 charsetUTF-8 E-post utan problem har inte gränsenDrupal-OG-Mailinglist - 1143534839 och har istället något liknande: Innehållstyp: multipartmixed gränsen ------------ 050107000403000604050201 charsetUTF-8 Naturligtvis är gränskontrollens exakta natur sannolikt att skicka något e-post-klientspecifik, men det verkar som att begränsa det till ett problem i skapandet av en ny MIME-enhet som angivits ovan. Babbage Credit Attribution: Babbage kommenterade 8 september 2012 kl 10:19 Hmm. E-postmeddelanden med detta problem har följande rubrikstruktur: Det vill säga den primära rubriken innehåller innehållsöverföring-kodning 8bit (och UTF-8), men då anges i varje stycke att det är 7bit (och ISO-8859-1, i fallet med dessa meddelanden). Jag tänker på 8bit7bit-skillnaden kan vara ett problem här. Babbage Credit Attribution: Babbage kommenterade 8 september 2012 kl. 21:10. Om ett Content-Transfer-Encoding header-fält visas som en del av ett meddelandehuvud, gäller det hela meddelandets kropp . Om ett rubrik för innehållsöverföring och kodning visas som en del av en kroppsdelhuvud, gäller den bara för kroppens kroppsdel. Om en enhet är typ av multipart eller meddelande, tillåts Content-Transfer-Encoding inte ha något annat värde än en bitbredd (t ex 7bit, 8bit, etc.) eller binärt. Så överensstämmer närvaron av en explicit 8bit-specifikation i rubriken 7bit-specifikationerna i multipartmeddelandet. Även avsaknaden av innehållsöverföring-kodning i rubriken skulle undvika detta problem, både för att då kroppsspecifikationerna skulle gälla men också eftersom samma dokument specificerar 7bit är standard om en kodning inte anges.
No comments:
Post a Comment