X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=mime.el;h=26e7e0dd168e68bab6b1bf6ef20937055159e5d7;hb=60993a7bcd85d7e96cefee43534e377db810d26c;hp=bc38dae6c1191f583aa79b540059be417614da4c;hpb=4248a1b9eb6e8271990355e6393683be2a0ec54b;p=elisp%2Fflim.git diff --git a/mime.el b/mime.el index bc38dae..26e7e0d 100644 --- a/mime.el +++ b/mime.el @@ -190,39 +190,59 @@ If MESSAGE is specified, it is regarded as root entity." (setq field-name (intern (capitalize (capitalize field-name))))) (or entity (setq entity mime-message-structure)) - (let* ((header (mime-entity-original-header-internal entity)) - (field-body (cdr (assq field-name header)))) - (or field-body - (progn - (if (setq field-body - (mime-entity-send entity 'fetch-field - (symbol-name field-name))) - (mime-entity-set-original-header-internal - entity (put-alist field-name field-body header)) - ) - field-body)))) - -(defalias 'mime-entity-content-type 'mime-entity-content-type-internal) + (cond ((eq field-name 'Date) + (or (mime-entity-date-internal entity) + (mime-entity-set-date-internal + entity (mime-entity-send entity 'fetch-field "Date")) + )) + ((eq field-name 'Message-Id) + (or (mime-entity-message-id-internal entity) + (mime-entity-set-message-id-internal + entity (mime-entity-send entity 'fetch-field "Message-Id")) + )) + ((eq field-name 'References) + (or (mime-entity-references-internal entity) + (mime-entity-set-references-internal + entity (mime-entity-send entity 'fetch-field "References")) + )) + (t + (let* ((header (mime-entity-original-header-internal entity)) + (field-body (cdr (assq field-name header)))) + (or field-body + (progn + (if (setq field-body + (mime-entity-send entity 'fetch-field + (symbol-name field-name))) + (mime-entity-set-original-header-internal + entity (put-alist field-name field-body header)) + ) + field-body)) + )))) + +(defun mime-entity-content-type (entity) + (or (mime-entity-content-type-internal entity) + (let ((ret (mime-fetch-field 'Content-Type entity))) + (if ret + (mime-entity-set-content-type-internal + entity (mime-parse-Content-Type ret)) + )))) (defun mime-entity-content-disposition (entity) (or (mime-entity-content-disposition-internal entity) (let ((ret (mime-fetch-field 'Content-Disposition entity))) (if ret - (let ((disposition (mime-parse-Content-Disposition ret))) - (when disposition - (mime-entity-set-content-disposition-internal - entity disposition) - disposition)))))) + (mime-entity-set-content-disposition-internal + entity (mime-parse-Content-Disposition ret)) + )))) (defun mime-entity-encoding (entity &optional default-encoding) (or (mime-entity-encoding-internal entity) - (let ((encoding - (or (let ((ret (mime-fetch-field - 'Content-Transfer-Encoding entity))) - (and ret (mime-parse-Content-Transfer-Encoding ret))) - default-encoding "7bit"))) - (mime-entity-set-encoding-internal entity encoding) - encoding))) + (let ((ret (mime-fetch-field 'Content-Transfer-Encoding entity))) + (mime-entity-set-encoding-internal + entity + (or (and ret (mime-parse-Content-Transfer-Encoding ret)) + default-encoding "7bit")) + ))) (defun mime-read-field (field-name &optional entity) (or (symbolp field-name) @@ -256,23 +276,21 @@ If MESSAGE is specified, it is regarded as root entity." (setq field (std11-parse-address (eword-lexical-analyze field-body))) ) - ((memq field-name eword-decode-ignored-field-list) - (setq field field-body)) - ((memq field-name eword-decode-structured-field-list) - (setq field (eword-decode-structured-field-body - field-body))) (t - (setq field (eword-decode-unstructured-field-body - field-body)) + (setq field (mime-decode-field-body + field-body field-name 'native)) )) (mime-entity-set-parsed-header-internal entity (put-alist field-name field header)) field))))))) -(mm-define-generic insert-decoded-header (entity &optional invisible-fields - visible-fields) +(mm-define-generic insert-header (entity &optional invisible-fields + visible-fields) "Insert before point a decoded header of ENTITY.") +(define-obsolete-function-alias + 'mime-insert-decoded-header 'mime-insert-header) + ;;; @ Entity Attributes ;;; @@ -317,6 +335,9 @@ If MESSAGE is specified, it is regarded as root entity." (mm-define-generic entity-content (entity) "Return content of ENTITY as byte sequence (string).") +(mm-define-generic insert-text-content (entity) + "Insert decoded text body of ENTITY.") + (mm-define-generic write-entity-content (entity filename) "Write content of ENTITY into FILENAME.")