Function: mml-expand-html-into-multipart-related
mml-expand-html-into-multipart-related is a byte-compiled function
defined in mml.el.gz.
Signature
(mml-expand-html-into-multipart-related CONT)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/mml.el.gz
(defun mml-expand-html-into-multipart-related (cont)
(let ((new-parts nil)
(cid 1))
(mm-with-multibyte-buffer
(insert (cdr (assq 'contents cont)))
(goto-char (point-min))
(with-syntax-table mml-syntax-table
(while (re-search-forward "<img\\b" nil t)
(goto-char (match-beginning 0))
(let* ((start (point))
(img (nth 2
(nth 2
(libxml-parse-html-region
(point) (progn (forward-sexp) (point))))))
(end (point))
(parsed (url-generic-parse-url (cdr (assq 'src (cadr img))))))
(when (and (null (url-type parsed))
(not (zerop (length (url-filename parsed))))
(file-exists-p (url-filename parsed)))
(goto-char start)
(when (search-forward (url-filename parsed) end t)
(let ((cid (format "fsf.%d" cid)))
(replace-match (concat "cid:" cid) t t)
(push (list cid (url-filename parsed)
(get-text-property start 'display))
new-parts))
(setq cid (1+ cid)))))))
;; We have local images that we want to include.
(when new-parts
(setcdr (assq 'contents cont) (buffer-string))
(setq cont
(nconc (list 'multipart (cons 'type "related"))
(list cont)))
(dolist (new-part (nreverse new-parts))
(setq cont
(nconc cont
(list `(part (type . "image/png")
,@(mml--possibly-alter-image
(nth 1 new-part)
(nth 2 new-part))
(id . ,(concat "<" (nth 0 new-part)
">"))))))))
cont)))