Functions

body = "(" (body-type-1part / body-type-mpart) ")"

body-ext-1part = body-fld-md5 [SP body-fld-dsp [SP body-fld-lang [SP body-fld-loc *(SP body-extension)] ] ]

body-ext-mpart = body-fld-param [SP body-fld-dsp [SP body-fld-lang [SP body-fld-loc *(SP body-extension)] ] ]

body-extension = nstring / number / "(" body-extension *(SP body-extension) ")"

body-fields = body-fld-param SP body-fld-id SP body-fld-desc SP body-fld-enc SP body-fld-octets

body-fld-desc = nstring

body-fld-dsp = "(" string SP body-fld-param ")" / nil

body-fld-enc = ( DQUOTE ( "7BIT" / "8BIT" / "BINARY" / "BASE64"/ "QUOTED-PRINTABLE" ) DQUOTE ) / string

body-fld-id = nstring

body-fld-lang = nstring / "(" string *(SP string) ")"

body-fld-lines = number

body-fld-loc = nstring

body-fld-md5 = nstring

body-fld-octets = number

body-fld-param = "(" string SP string *(SP string SP string) ")" / nil

body-type-basic = media-basic SP body-fields

body-type-text = media-text SP body-fields SP body-fld-lines

media-basic = ( ( DQUOTE ( "APPLICATION" / "AUDIO" / "IMAGE" / "MESSAGE" / "VIDEO" ) DQUOTE ) / string ) SP media-subtype

media-message = DQUOTE "MESSAGE" DQUOTE SP DQUOTE "RFC822" DQUOTE

media-subtype = string

media-text = DQUOTE "TEXT" DQUOTE SP media-subtype