diff options
author | Arun Isaac | 2019-10-02 02:32:49 +0530 |
---|---|---|
committer | Arun Isaac | 2019-10-02 02:32:49 +0530 |
commit | dd01f11a18eed5d825658f87c35b2e28d08767e4 (patch) | |
tree | 3019c4da0aefe1c866993d7739c362ee6576daad | |
parent | 6159257c9da3664c516a26fad1ee942068fbbdd2 (diff) | |
download | guile-email-dd01f11a18eed5d825658f87c35b2e28d08767e4.tar.gz guile-email-dd01f11a18eed5d825658f87c35b2e28d08767e4.tar.lz guile-email-dd01f11a18eed5d825658f87c35b2e28d08767e4.zip |
email: Tolerate decoding errors in body.
* email/email.scm (decode-body): Tolerate decoding errors in the body
using the substitute conversion strategy.
* tests/email.scm ("tolerate decoding errors in body"): New test.
-rw-r--r-- | email/email.scm | 2 | ||||
-rw-r--r-- | tests/email.scm | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/email/email.scm b/email/email.scm index 666bd3e..1960456 100644 --- a/email/email.scm +++ b/email/email.scm @@ -910,7 +910,7 @@ list of header keys and values." ((#{7bit}# #{8bit}# binary) body) (else (error "Body decoding failed. Unknown encoding" encoding))))) (if charset - (bytevector->string decoded-octets charset) + (bytevector->string decoded-octets charset 'substitute) decoded-octets))) (define (read-next-email-in-mbox port) diff --git a/tests/email.scm b/tests/email.scm index 1a0ec34..48056b7 100644 --- a/tests/email.scm +++ b/tests/email.scm @@ -322,6 +322,18 @@ body" "iso-8859-1")) (charset . "utf-8") (charset . "foo")))) +(test-equal "tolerate decoding errors in body" + (parse-email + "Content-Transfer-Encoding: quoted-printable + +copyright =A9") + (make-email + `((content-type (type . text) + (subtype . plain) + (charset . "utf-8")) + (content-transfer-encoding . quoted-printable)) + "copyright �")) + (test-equal "parse name-addr email address" (parse-email-address "Foo <foo@example.org>") '((name . "Foo") (address . "foo@example.org"))) |