]> git.eshelyaron.com Git - emacs.git/commitdiff
(rfc2368-parse-mailto-url): Autoload.
authorEli Zaretskii <eliz@gnu.org>
Sun, 7 Mar 2004 19:59:15 +0000 (19:59 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sun, 7 Mar 2004 19:59:15 +0000 (19:59 +0000)
(browse-url-mail): Use it.

lisp/net/browse-url.el

index d590e8bb2a44e93fed56487a0fd811193ae6bd98..fa0d7ea7914dc59a6bb6743b1b681b6b2ef2f9e5 100644 (file)
@@ -1301,9 +1301,11 @@ Default to the URL around or before point."
 
 ;; --- mailto ---
 
+(autoload 'rfc2368-parse-mailto-url "rfc2368")
+
 ;;;###autoload
 (defun browse-url-mail (url &optional new-window)
-  "Open a new mail message buffer within Emacs.
+  "Open a new mail message buffer within Emacs for the RFC 2368 URL.
 Default to using the mailto: URL around or before point as the
 recipient's address.  Supplying a non-nil interactive prefix argument
 will cause the mail to be composed in another window rather than the
@@ -1318,14 +1320,24 @@ When called non-interactively, optional second argument NEW-WINDOW is
 used instead of `browse-url-new-window-flag'."
   (interactive (browse-url-interactive-arg "Mailto URL: "))
   (save-excursion
-    (let ((to (if (string-match "^mailto:" url)
-                 (substring url 7)
-               url)))
+    (let* ((alist (rfc2368-parse-mailto-url url))
+          (to (assoc "To" alist))
+          (subject (assoc "Subject" alist))
+          (body (assoc "Body" alist))
+          (rest (delete to (delete subject (delete body alist))))
+          (to (cdr to))
+          (subject (cdr subject))
+          (body (cdr body))
+          (mail-citation-hook (unless body mail-citation-hook)))
       (if (browse-url-maybe-new-window new-window)
-         (compose-mail-other-window to nil nil nil
-                                    (list 'insert-buffer (current-buffer)))
-       (compose-mail to nil nil nil nil
-                     (list 'insert-buffer (current-buffer)))))))
+         (compose-mail-other-window to subject rest nil
+                                    (if body
+                                        (list 'insert body)
+                                      (list 'insert-buffer (current-buffer))))
+       (compose-mail to subject rest nil nil
+                     (if body
+                         (list 'insert body)
+                       (list 'insert-buffer (current-buffer))))))))
 
 ;; --- Random browser ---