* wl-draft.el (wl-draft-send-mail-with-pop-before-smtp): Fix
[elisp/wanderlust.git] / wl / wl-draft.el
index 85fcdf9..52c3732 100644 (file)
@@ -53,6 +53,8 @@
 (eval-and-compile
   (autoload 'wl-addrmgr "wl-addrmgr"))
 
+(autoload 'open-ssl-stream "ssl")
+
 (defvar wl-draft-buffer-message-number nil)
 (defvar wl-draft-field-completion-list nil)
 (defvar wl-draft-verbose-send t)
@@ -136,6 +138,14 @@ e.g.
                           (list wl-smtp-authenticate-type)))))
            (smtp-use-sasl (and smtp-sasl-mechanisms t))
            (smtp-use-starttls (eq wl-smtp-connection-type 'starttls))
+           (smtp-open-connection-function
+            (if (eq wl-smtp-connection-type 'ssl)
+                #'open-ssl-stream
+              smtp-open-connection-function))
+           (smtp-end-of-line
+            (if (eq wl-smtp-connection-type 'ssl)
+                "\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?
@@ -772,11 +782,11 @@ Reply to author if WITH-ARG is non-nil."
                       (string= (wl-summary-buffer-folder-name)
                                folder-name)))
                (with-current-buffer buffer
-                 (elmo-folder-unflag-answered folder (list number))
+                 (elmo-folder-unset-flag folder (list number) 'answered)
                  (when (wl-summary-jump-to-msg number)
                    (wl-summary-update-persistent-mark)))
              (elmo-folder-open folder 'load-msgdb)
-             (elmo-folder-unflag-answered folder (list number))
+             (elmo-folder-unset-flag folder (list number) 'answered)
              (elmo-folder-close folder))))
        (wl-draft-hide cur-buf)
        (wl-draft-delete cur-buf)))
@@ -1105,7 +1115,7 @@ non-nil."
 (defun wl-draft-send-mail-with-pop-before-smtp ()
   "Send the prepared message buffer with POP-before-SMTP."
   (require 'elmo-pop3)
-  (let ((session
+  (let ((folder
         (luna-make-entity
          'elmo-pop3-folder
          :user   (or wl-pop-before-smtp-user
@@ -1116,16 +1126,17 @@ non-nil."
                      elmo-pop3-default-port)
          :auth   (or wl-pop-before-smtp-authenticate-type
                      elmo-pop3-default-authenticate-type)
-         :stream-type (or wl-pop-before-smtp-stream-type
-                          elmo-pop3-default-stream-type))))
+         :stream-type (elmo-get-network-stream-type
+                       (or wl-pop-before-smtp-stream-type
+                           elmo-pop3-default-stream-type))))
+       session)
     (condition-case error
        (progn
-         (elmo-pop3-get-session session)
+         (setq session (elmo-pop3-get-session folder))
          (when session (elmo-network-close-session session)))
       (error
-       (elmo-network-close-session session)
        (unless (string= (nth 1 error) "Unplugged")
-        (signal (car error)(cdr error))))))
+        (signal (car error) (cdr error))))))
   (wl-draft-send-mail-with-smtp))
 
 (defun wl-draft-insert-required-fields (&optional force-msgid)
@@ -1287,6 +1298,7 @@ This variable is valid when `wl-interactive-send' has non-nil value."
                (goto-char (point-min)) ; to show recipients in header
                (catch 'done
                  (while t
+                   (discard-input)
                    (message "Send current draft? <y/n/j(down)/k(up)> ")
                    (setq answer (let ((cursor-in-echo-area t)) (read-char)))
                    (cond
@@ -2420,6 +2432,10 @@ Automatically applied in draft sending time."
            (put-text-property (point-min) (point-max) 'face nil)
            (wl-highlight-message (point-min) (point-max) t))
        (set-buffer-modified-p modified))))
+  (static-when (featurep 'xemacs)
+    ;; Cope with one of many XEmacs bugs that `recenter' takes
+    ;; a long time if there are a lot of invisible text lines.
+    (redraw-frame))
   (recenter n))
 
 ;; insert element from history