;;; Code:
;;
-
+(require 'elmo)
(require 'sendmail)
(require 'wl-template)
(require 'emu)
"\n"
smtp-end-of-line))
smtp-sasl-user-name smtp-sasl-properties sasl-read-passphrase)
- (if (and (string= (car smtp-sasl-mechanisms) "DIGEST-MD5")
- ;; sendmail bug?
- (string-match "^\\([^@]*\\)@\\([^@]*\\)"
- wl-smtp-posting-user))
- (setq smtp-sasl-user-name (match-string 1 wl-smtp-posting-user)
- smtp-sasl-properties (list 'realm
- (match-string 2 wl-smtp-posting-user)))
- (setq smtp-sasl-user-name wl-smtp-posting-user
- smtp-sasl-properties nil))
+ (setq smtp-sasl-user-name wl-smtp-posting-user
+ smtp-sasl-properties (when wl-smtp-authenticate-realm
+ (list 'realm
+ wl-smtp-authenticate-realm)))
(setq sasl-read-passphrase
(function
(lambda (prompt)
(let (references parent-folder subject)
(with-current-buffer summary-buf
(setq parent-folder (wl-summary-buffer-folder-name)))
- (setq subject (wl-draft-forward-make-subject original-subject))
+ (let ((decoder (mime-find-field-decoder 'Subject 'plain)))
+ (setq subject (if (and original-subject decoder)
+ (funcall decoder original-subject) original-subject)))
(with-current-buffer (wl-message-get-original-buffer)
+ (setq subject (wl-draft-forward-make-subject subject))
(setq references (nconc
(std11-field-bodies '("References" "In-Reply-To"))
(list (std11-field-body "Message-Id"))))
(with-temp-buffer ; to keep raw buffer unibyte.
(set-buffer-multibyte default-enable-multibyte-characters)
(setq decoder (mime-find-field-decoder 'Subject 'plain))
- (setq subject (wl-draft-reply-make-subject
- (if (and subject decoder)
- (funcall decoder subject) subject)))
+ (setq subject (if (and subject decoder)
+ (funcall decoder subject) subject))
(setq to-alist
(mapcar
(lambda (addr)
(cons (nth 1 (std11-extract-address-components addr))
(if decoder (funcall decoder addr) addr)))
cc)))
+ (setq subject (wl-draft-reply-make-subject subject))
(setq in-reply-to (std11-field-body "Message-Id"))
(setq references (nconc
(std11-field-bodies '("References" "In-Reply-To"))
wl-draft-cite-function)
(unwind-protect
(progn
- (elmo-message-fetch (wl-folder-get-elmo-folder fld)
- number
- ;; No cache.
- (elmo-make-fetch-strategy 'entire)
- nil mail-reply-buffer)
+ (with-current-buffer mail-reply-buffer
+ (erase-buffer)
+ (elmo-message-fetch (wl-folder-get-elmo-folder fld)
+ number
+ ;; No cache.
+ (elmo-make-fetch-strategy 'entire)))
(wl-draft-yank-from-mail-reply-buffer nil))
(kill-buffer mail-reply-buffer))))
(t
(throw 'done nil)))))))
(quit nil))
- (when wl-draft-send-confirm-with-preview
+ (when (and wl-draft-send-confirm-with-preview
+ (eq major-mode 'mime-view-mode))
(wl-mime-quit-preview)))))
(defun wl-draft-send (&optional kill-when-done mes-string)
;; If flag is set after send-function, the current mailbox
;; might changed by Fcc.
;; It causes a huge loss in the IMAP folder.
- (when (and parent-flag parent-number parent-folder)
+ (when (and parent-flag parent-number
+ (not (eq (length parent-folder) 0)))
(wl-folder-set-persistent-mark
parent-folder parent-number parent-flag))
(funcall wl-draft-send-function editing-buffer kill-when-done)
(goto-char (point-max))
(insert-buffer-substring send-mail-buffer header-end)
(let ((id (std11-field-body "Message-ID"))
- (elmo-enable-disconnected-operation t)
- cache-saved)
+ (elmo-enable-disconnected-operation t))
(while fcc-list
- (unless (or cache-saved
- (elmo-folder-plugged-p
- (wl-folder-get-elmo-folder (car fcc-list))))
- (elmo-file-cache-save id nil) ;; for disconnected operation
- (setq cache-saved t))
(if (elmo-folder-append-buffer
(wl-folder-get-elmo-folder
(eword-decode-string (car fcc-list)))
(let (wl-demo)
(wl-init)) ; returns immediately if already initialized.
-
+ (wl-set-save-drafts)
(let (buffer header-alist-internal)
(setq buffer (wl-draft-create-buffer parent-folder))
(unless (cdr (assq 'From header-alist))
(eq this-command 'wl-summary-forward)
(eq this-command 'wl-summary-target-mark-forward)
(eq this-command 'wl-summary-target-mark-reply-with-citation)))
- (buffer (generate-new-buffer "*draft*")) ; Just for initial name.
- change-major-mode-hook)
+ (buffer (generate-new-buffer "*draft*"))) ; Just for initial name.
(set-buffer buffer)
;; switch-buffer according to draft buffer style.
(if wl-draft-use-frame
(funcall wl-draft-buffer-style buffer)
(error "Invalid value for wl-draft-buffer-style"))))))
(auto-save-mode -1)
- (wl-draft-mode)
+ (let (change-major-mode-hook)
+ (wl-draft-mode))
(set-buffer-multibyte t) ; draft buffer is always multibyte.
(make-local-variable 'truncate-partial-width-windows)
(setq truncate-partial-width-windows nil)
(switch-to-buffer-other-frame buffer)
(switch-to-buffer buffer))
(set-buffer buffer)
- (elmo-message-fetch draft-folder number (elmo-make-fetch-strategy 'entire)
- nil (current-buffer))
+ (elmo-message-fetch draft-folder number (elmo-make-fetch-strategy 'entire))
(elmo-delete-cr-buffer)
(let ((mime-edit-again-ignored-field-regexp
"^\\(Content-.*\\|Mime-Version\\):"))
(wl-draft-queue-info-operation (car msgs) 'load)
(elmo-message-fetch queue-folder
(car msgs)
- (elmo-make-fetch-strategy 'entire)
- nil (current-buffer))
+ (elmo-make-fetch-strategy 'entire))
(condition-case err
(setq failure (funcall
wl-draft-queue-flush-send-function