X-Git-Url: https://cgit.sxemacs.org/?p=gnus;a=blobdiff_plain;f=lisp%2Fnnimap.el;h=618db2bb5bce8d7a09f2809721d8b6251acdc4b0;hp=26cf29732c2555f70fc209d2a186d69c82d089f6;hb=b95775bc81748368cb104852b8b9331b0191735c;hpb=f4ff691a24fae6381a0f5bca9c0391d460cec333 diff --git a/lisp/nnimap.el b/lisp/nnimap.el index 26cf29732..618db2bb5 100644 --- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -40,6 +40,9 @@ (require 'utf7) (require 'parse-time) +(autoload 'auth-source-forget-user-or-password "auth-source") +(autoload 'auth-source-user-or-password "auth-source") + (nnoo-declare nnimap) (defvoo nnimap-address nil @@ -339,15 +342,6 @@ textual parts.") (when (eq nnimap-stream 'starttls) (nnimap-command "STARTTLS") (starttls-negotiate (nnimap-process nnimap-object))) - ;; If this is a STARTTLS-capable server, then sever the - ;; connection and start a STARTTLS connection instead. - (when (and (eq nnimap-stream 'network) - (member "STARTTLS" (nnimap-capabilities nnimap-object))) - (let ((nnimap-stream 'starttls)) - (delete-process (nnimap-process nnimap-object)) - (kill-buffer (current-buffer)) - (return - (nnimap-open-connection buffer)))) (when nnimap-server-port (push (format "%s" nnimap-server-port) ports)) (unless (equal connection-result "PREAUTH") @@ -422,13 +416,11 @@ textual parts.") (with-current-buffer (nnimap-buffer) (erase-buffer) (when nnimap-fetch-partial-articles - (if (eq nnimap-fetch-partial-articles t) - (setq parts '(1)) - (nnimap-command "UID FETCH %d (BODYSTRUCTURE)" article) - (goto-char (point-min)) - (when (re-search-forward "FETCH.*BODYSTRUCTURE" nil t) - (setq structure (ignore-errors (read (current-buffer))) - parts (nnimap-find-wanted-parts structure))))) + (nnimap-command "UID FETCH %d (BODYSTRUCTURE)" article) + (goto-char (point-min)) + (when (re-search-forward "FETCH.*BODYSTRUCTURE" nil t) + (setq structure (ignore-errors (read (current-buffer))) + parts (nnimap-find-wanted-parts structure)))) (when (if parts (nnimap-get-partial-article article parts structure) (nnimap-get-whole-article article)) @@ -508,8 +500,15 @@ textual parts.") t)) (defun nnimap-insert-partial-structure (structure parts &optional subp) - (let ((type (car (last structure 4))) - (boundary (cadr (member "BOUNDARY" (car (last structure 3)))))) + (let (type boundary) + (let ((bstruc structure)) + (while (consp (car bstruc)) + (pop bstruc)) + (setq type (car bstruc)) + (setq bstruc (car (cdr bstruc))) + (when (and (stringp (car bstruc)) + (string= (downcase (car bstruc)) "boundary")) + (setq boundary (cadr bstruc)))) (when subp (insert (format "Content-type: multipart/%s; boundary=%S\n\n" (downcase type) boundary))) @@ -551,7 +550,9 @@ textual parts.") (number-to-string num) (format "%s.%s" prefix num)))) (setcar (nthcdr 9 sub) id) - (when (string-match nnimap-fetch-partial-articles type) + (when (if (eq nnimap-fetch-partial-articles t) + (equal id "1") + (string-match nnimap-fetch-partial-articles type)) (push id parts)))) (incf num))) (nreverse parts))) @@ -786,6 +787,7 @@ textual parts.") (deffoo nnimap-request-accept-article (group &optional server last) (when (nnimap-possibly-change-group nil server) (nnmail-check-syntax) + (nnimap-add-cr) (let ((message (buffer-string)) (message-id (message-field-value "message-id")) sequence) @@ -967,8 +969,10 @@ textual parts.") (t ;; No articles and no uidnext. nil))) - (gnus-set-active (cons (car (gnus-active group)) - (or high (1- uidnext))))) + (gnus-set-active + group + (cons (car (gnus-active group)) + (or high (1- uidnext))))) (when (and (not high) uidnext) (setq high (1- uidnext)))