Function: nnimap-request-accept-article

nnimap-request-accept-article is a byte-compiled function defined in nnimap.el.gz.

Signature

(nnimap-request-accept-article GROUP &optional SERVER LAST)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/nnimap.el.gz
(deffoo nnimap-request-accept-article (group &optional server _last)
  (unless group
    ;; We're respooling.  Find out where mail splitting would place
    ;; this article.
    (setq group
	  (caar
	   (nnmail-article-group
	    ;; We don't really care about the article number, because
	    ;; that's determined by the IMAP server later.  So just
	    ;; return the group name.
	    (lambda (group)
	       (list (list group)))))))
  (when (nnimap-change-group nil server)
    (nnmail-check-syntax)
    (let ((message-id (message-field-value "message-id"))
	  sequence message)
      (nnimap-add-cr)
      (setq message (buffer-substring-no-properties (point-min) (point-max)))
      (with-current-buffer (nnimap-buffer)
	(when (setq message (or (nnimap-process-quirk "OK Gimap " 'append message)
				message))
	  ;; If we have this group open read-only, then unselect it
	  ;; before appending to it.
	  (when (equal (nnimap-examined nnimap-object) group)
	    (nnimap-unselect-group))
	  (erase-buffer)
	  (setq sequence (nnimap-send-command
			  "APPEND %S {%d}" (nnimap-group-to-imap group)
			  (length message)))
	  (unless nnimap-streaming
	    (nnimap-wait-for-connection "^[+]"))
	  (process-send-string (get-buffer-process (current-buffer)) message)
	  (process-send-string (get-buffer-process (current-buffer))
			       (if (nnimap-newlinep nnimap-object)
				   "\n"
				 "\r\n"))
	  (let ((result (nnimap-get-response sequence)))
	    (if (not (nnimap-ok-p result))
		(progn
		  (nnheader-report 'nnimap "%s" result)
		  nil)
	      (cons group
		    (or (nnimap-find-uid-response "APPENDUID" (car result))
			(nnimap-find-article-by-message-id
			 group server message-id
                         nnimap-request-articles-find-limit))))))))))