+ (mime-entity-fetch-field entity field-name)
+ )
+(make-obsolete 'mime-fetch-field 'mime-entity-fetch-field)
+
+(defun mime-entity-content-type (entity)
+ (or (mime-entity-content-type-internal entity)
+ (let ((ret (mime-entity-fetch-field entity "Content-Type")))
+ (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-entity-fetch-field entity "Content-Disposition")))
+ (if ret
+ (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 ((ret (mime-entity-fetch-field entity "Content-Transfer-Encoding")))
+ (mime-entity-set-encoding-internal
+ entity
+ (or (and ret (mime-parse-Content-Transfer-Encoding ret))
+ default-encoding "7bit"))
+ )))
+
+(defvar mime-field-parser-alist
+ '((Return-Path . std11-parse-route-addr)
+
+ (Reply-To . std11-parse-addresses)
+
+ (Sender . std11-parse-mailbox)
+ (From . std11-parse-addresses)
+
+ (Resent-Reply-To . std11-parse-addresses)
+
+ (Resent-Sender . std11-parse-mailbox)
+ (Resent-From . std11-parse-addresses)
+
+ (To . std11-parse-addresses)
+ (Resent-To . std11-parse-addresses)
+ (Cc . std11-parse-addresses)
+ (Resent-Cc . std11-parse-addresses)
+ (Bcc . std11-parse-addresses)
+ (Resent-Bcc . std11-parse-addresses)
+
+ (Message-Id . mime-parse-msg-id)
+ (Recent-Message-Id . mime-parse-msg-id)
+
+ (In-Reply-To . std11-parse-msg-ids)
+ (References . std11-parse-msg-ids)
+
+ (Content-Id . mime-parse-msg-id)
+ ))
+
+(defun mime-entity-read-field (entity field-name)
+ (let ((sym (if (symbolp field-name)
+ (prog1
+ field-name
+ (setq field-name (symbol-name field-name)))
+ (capitalize (capitalize field-name)))))
+ (cond ((eq sym 'Content-Type)
+ (mime-entity-content-type entity)
+ )
+ ((eq sym 'Content-Disposition)
+ (mime-entity-content-disposition entity)
+ )
+ ((eq sym 'Content-Transfer-Encoding)
+ (mime-entity-encoding entity)
+ )
+ (t
+ (let* ((header (mime-entity-parsed-header-internal entity))
+ (field (cdr (assq sym header))))
+ (or field
+ (let ((field-body (mime-entity-fetch-field entity field-name))
+ parser)
+ (when field-body
+ (setq parser
+ (cdr (assq sym mime-field-parser-alist)))
+ (setq field
+ (if parser
+ (funcall parser
+ (eword-lexical-analyze field-body))
+ (mime-decode-field-body field-body sym 'plain)
+ ))
+ (mime-entity-set-parsed-header-internal
+ entity (put-alist sym field header))
+ field))))))))