diff options
Diffstat (limited to 'users/sterni/mblog/note.lisp')
-rw-r--r-- | users/sterni/mblog/note.lisp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/users/sterni/mblog/note.lisp b/users/sterni/mblog/note.lisp index 0091e97b083f..93d9231aa293 100644 --- a/users/sterni/mblog/note.lisp +++ b/users/sterni/mblog/note.lisp @@ -66,6 +66,20 @@ :test #'string-equal)) (string-equal (cdr uniform-id) "com.apple.mail-note"))) +(defun decode-RFC2047-to-string (input) + (apply + #'concatenate + (cons 'string + (mapcar + (lambda (el) + (etypecase el + (cons (babel:octets-to-string + (car el) + :encoding (babel-encodings:get-character-encoding + (intern (string-upcase (cdr el)) 'keyword)))) + (string el))) + (mime:parse-RFC2047-text input))))) + (defun make-apple-note (msg) (check-type msg mime-message) @@ -73,7 +87,9 @@ (error "Passed message is not an Apple Note according to headers")) (let ((text-part (mime:find-mime-text-part msg)) - (subject (find-mime-message-header "Subject" msg)) + (subject (when-let ((val (find-mime-message-header "Subject" msg))) + ;; TODO(sterni): mime4cl should do this + (decode-RFC2047-to-string val))) (uuid (when-let ((val (find-mime-message-header "X-Universally-Unique-Identifier" msg))) |