<feed xmlns='http://www.w3.org/2005/Atom'>
<title>guile-email/email, branch v0.2.0</title>
<subtitle>Guile email parser</subtitle>
<id>http://git.systemreboot.net/guile-email/atom?h=v0.2.0</id>
<link rel='self' href='http://git.systemreboot.net/guile-email/atom?h=v0.2.0'/>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-email/'/>
<updated>2019-08-07T17:29:28+00:00</updated>
<entry>
<title>doc: Document mbox-&gt;emails.</title>
<updated>2019-08-07T17:29:28+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2019-08-07T17:28:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-email/commit/?id=3a02125ad752209e349a94ff7a470a2d79aff699'/>
<id>urn:sha1:3a02125ad752209e349a94ff7a470a2d79aff699</id>
<content type='text'>
* doc/guile-email.texi (Reading Email): New chapter.
* email/email.scm (mbox-&gt;emails): Add docstring.
</content>
</entry>
<entry>
<title>utils: Clarify read-while docstring.</title>
<updated>2019-08-07T12:42:30+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2019-08-07T12:42:30+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-email/commit/?id=88d5b26f058917c27b45569683ad8e875b23d569'/>
<id>urn:sha1:88d5b26f058917c27b45569683ad8e875b23d569</id>
<content type='text'>
* email/utils.scm (read-while): Clarify docstring.
</content>
</entry>
<entry>
<title>email: Improve comment about default charset.</title>
<updated>2019-07-28T06:46:06+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2019-07-28T06:46:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-email/commit/?id=a3fe3740b12e9b8510c3243f5eb66818926d67c7'/>
<id>urn:sha1:a3fe3740b12e9b8510c3243f5eb66818926d67c7</id>
<content type='text'>
* email/email.scm (post-process-content-type): Mention that RFC6657
specifies UTF-8 as the default charset only for text/* media types.
</content>
</entry>
<entry>
<title>email: Read mboxes as bytevectors.</title>
<updated>2019-07-28T06:43:44+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2019-07-28T06:41:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-email/commit/?id=1f7c45fa0b71bd137e4b661e0d473c3eb9c98f48'/>
<id>urn:sha1:1f7c45fa0b71bd137e4b661e0d473c3eb9c98f48</id>
<content type='text'>
* email/email.scm (read-next-email-in-mbox): Read bytes from mboxes,
not characters.
</content>
</entry>
<entry>
<title>utils: Return eof-object from read-bytes-till on end of file.</title>
<updated>2019-07-28T06:43:44+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2019-07-28T05:59:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-email/commit/?id=b6c904c1b57533e7a3dd4e15ed58708a06e94bc8'/>
<id>urn:sha1:b6c904c1b57533e7a3dd4e15ed58708a06e94bc8</id>
<content type='text'>
* email/utils.scm (read-bytes-till): Return eof-object, not #vu8(), on
end of file.
* tests/utils.scm: New file.
* Makefile.am (SCM_TESTS): Register it.
</content>
</entry>
<entry>
<title>email: Decode MIME entities without headers.</title>
<updated>2019-07-28T06:43:43+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2019-07-27T14:55:29+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-email/commit/?id=9ac10570fca04800f04a439e484f41421864b99f'/>
<id>urn:sha1:9ac10570fca04800f04a439e484f41421864b99f</id>
<content type='text'>
* email/email.scm (email-&gt;headers+body): If there are no headers,
return "" as headers not an eof-object.
(parse-email-body): Parse headers of parent entity or email to
parse-mime-entity.
(add-default-mime-entity-headers): New function.
(parse-mime-entity): Use add-default-mime-entity-headers instead of
add-default-headers. Handle MIME entities without headers.
* tests/email.scm ("decode MIME entity without headers"): New test.
</content>
</entry>
<entry>
<title>email: Support email with mixed encoding of characters.</title>
<updated>2019-07-28T06:43:43+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2019-07-25T20:23:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-email/commit/?id=ac83c2a00c13702bc365cd0f3074239fa63d743f'/>
<id>urn:sha1:ac83c2a00c13702bc365cd0f3074239fa63d743f</id>
<content type='text'>
Prior to this, parse-email would accept email in the form of a
string. A string is constrained to use the same encoding for all its
characters whereas an email can have characters encoded using
different encoding schemes. Therefore, it is more correct that
parse-email deals with bytevectors instead of strings.

* email/utils.scm (read-bytes-till): New function.
* email/email.scm (body-&gt;mime-entities, email-&gt;headers+body,
decode-body): Deal with emails as bytevectors instead of strings.
(parse-mime-entity): Rename text argument to bv.
(parse-email, parse-email-body): Overload to handle input in the form
of a string or bytevector.
* doc/guile-email.texi (Parsing e-mail): Document overloading of
parse-email and parse-email-body.
* tests/email.scm ("handle truncated multipart message gracefully"):
Deal in bytevectors instead of strings.
("email with 8 bit encoding and non UTF-8 charset", "multipart email
with a 8 bit encoding and non UTF-8 charset part"): New tests.
* tests/email-with-8bit-encoding-and-non-utf8-charset,
tests/multipart-email-with-a-8bit-encoding-and-non-utf8-charset-part:
New files.

Reported-by: Jack Hill &lt;jackhill@jackhill.us&gt;
</content>
</entry>
<entry>
<title>email: Match mime-entity-fields only against headers.</title>
<updated>2019-07-25T19:39:02+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2019-07-25T19:39:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-email/commit/?id=36474696eaa6187e7077f73d02daeb0138e03124'/>
<id>urn:sha1:36474696eaa6187e7077f73d02daeb0138e03124</id>
<content type='text'>
* email/email.scm (parse-mime-entity): Match mime-entity-fields only
against the headers, not the whole email.
</content>
</entry>
<entry>
<title>email: Import all of (email utils).</title>
<updated>2019-07-25T19:00:28+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2019-07-25T19:00:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-email/commit/?id=8cc644f388e5751335f8467ba4650c93d60b5d98'/>
<id>urn:sha1:8cc644f388e5751335f8467ba4650c93d60b5d98</id>
<content type='text'>
* email/email.scm: Import all of (email utils), not a subset of the
exported functions.
</content>
</entry>
<entry>
<title>email: Decode MIME encoded words in Subject header.</title>
<updated>2019-07-21T16:10:37+00:00</updated>
<author>
<name>Arun Isaac</name>
</author>
<published>2019-07-21T16:10:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.systemreboot.net/guile-email/commit/?id=7c6f220e95feb3bc79f48aca16b5ca691a561d97'/>
<id>urn:sha1:7c6f220e95feb3bc79f48aca16b5ca691a561d97</id>
<content type='text'>
Prior to this, MIME encoded words in the Subject header were not
decoded.

* email/email.scm (parse-email-headers): Decode MIME encoded words in
Subject header.
* tests/email.scm ("decode MIME encoded words in Subject header"): New
test.

Reported-by: Ricardo Wurmus &lt;rekado@elephly.net&gt;
</content>
</entry>
</feed>
