go-message icon indicating copy to clipboard operation
go-message copied to clipboard

Add Entity.Reader

Open emersion opened this issue 4 years ago • 1 comments

Add an Entity.Reader function which returns an io.Reader for the entity. This would allow users to read a header, inspect it and then forward the reader to someone else.

Ideally this wouldn't decode and re-encode the body: we'd save the original io.Reader. That can only work if the headers aren't modified.

Bonus points if message.Read can be optimized in case it's passed the result of an Entity.Reader call (just like we have for NewMultipart and Entity.MultipartReader).

emersion avatar Apr 24 '20 21:04 emersion

One open question is how to handle encoding/charset conversions, if at all.

Currently we allow library users to perform encoding/charset conversions by mutating the Entity.Header and using Entity.WriteTo. This won't work with Entity.Reader, because the encoding logic is io.Writer-based.

emersion avatar Apr 27 '20 08:04 emersion