[mel-base-devel] multipart messages and pop3

Jochen Schmidt jsc at crispylogics.com
Thu Apr 16 13:33:22 UTC 2009



--
Jochen Schmidt
CRISPYLOGICS
Uhlandstr. 9, 90408 Nürnberg

Fon: +49 (0)911 517 999-82
Fax: +49 (0)911 517 999-83

mailto:info at crispylogics.com
http://www.crispylogics.com

Am 16.04.2009 um 14:28 schrieb Timothy Ritchey <tritchey at mac.com>:

> I'm having an issue extracting the parts of messages, particularly
> when trying to work with pop3 folders. I am wondering if I am doing
> something wrong. I am trying to extract any text/plain, or text/plain
> alternative from emails. The following works when I pass it an imaps
> folder, but mel:parts hangs when I pass it a pop3 folder. When I break
> it, it is hanging out in compute-bodystructure-using-folder, waiting
> on a stream.
>
> Am I grabbing messages the right way?
>
> (defun find-plain-text (message)
>   (let ((parts (mel:parts message))
>    (body "Unable to process email contents"))
>     (dolist (p parts)
>       (multiple-value-bind (a b) (mel:content-type p)
>    (if (and (equal a :TEXT) (equal b :PLAIN))
>        (let ((b (mel:part-body-string p)))
>          (handler-case
>          (setf body (mel:decode-quoted-printable b))
>        (t ()
>          (setf body b))))
>      (progn
>        (when (and (equal a :MULTIPART) (equal b :ALTERNATIVE))
>          (find-plain-text p))))))
>     body))
>
> (defun check-email (folder)
>   (let* ((messages (mel:messages folder)))
>     (dolist (message messages)
>       (format t "~a~%" (find-plain-text message)))))
>
> I can call the following on the same message from the pop3 folder, and
> get the raw contents fine.
>
> (defmethod body (message)
>   (with-output-to-string (str)
>     (with-open-stream (stream (mel:message-body-stream message))
>       (loop for c = (read-char stream nil nil)
>     while c do (write-char c str)))))
>
> Any help would be appreciated.
>
> - T
>
>
> _______________________________________________
> mel-base-devel mailing list
> mel-base-devel at common-lisp.net
> http://common-lisp.net/cgi-bin/mailman/listinfo/mel-base-devel




More information about the mel-base-devel mailing list