help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: smtp issues: progress indicator and gracious failure


From: Stefan Monnier
Subject: Re: smtp issues: progress indicator and gracious failure
Date: Fri, 20 May 2011 09:46:26 -0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

> I use vm with smtpmail to send mail.  when on a slow wireless
> connection, sending 20Mb attachments can take over 10 minutes.  I am
> wondering if there is a way to get some progress indicator, such as a
> continuously updating "percent uploaded" in the echo area?

You could try the patch below.

> also, smtp fails quite often, and then I am left with the outgoing
> mail buffer.

Do you happen to know why?

> I can press c-c c-c to try again and that works in most cases, but
> then it adds the message to the outgoing folder again, so I need to
> erase the .FCC line by hand.  wouldn't it be good if a failed message
> was automatically put in "outgoing folder" such as a queued- mail
> directory, and then sent at a later time?  perhaps when smtpmail is
> called again to send another message?

That seems to be specific to VM, so I'll let the VM crowd handle it.


        Stefan


=== modified file 'lisp/mail/smtpmail.el'
--- lisp/mail/smtpmail.el       2011-02-12 17:51:02 +0000
+++ lisp/mail/smtpmail.el       2011-05-20 12:44:28 +0000
@@ -941,15 +941,20 @@
   (process-send-string process "\r\n"))
 
 (defun smtpmail-send-data (process buffer)
-  (let ((data-continue t) sending-data)
+  (let ((data-continue t) sending-data
+        (pr (make-progress-reporter "Sending email"
+                                    (with-current-buffer buffer (point-min))
+                                    (with-current-buffer buffer (point-max)))))
     (with-current-buffer buffer
       (goto-char (point-min)))
     (while data-continue
       (with-current-buffer buffer
+        (progress-reporter-update pr (point))
         (setq sending-data (buffer-substring (point-at-bol) (point-at-eol)))
        (end-of-line 2)
         (setq data-continue (not (eobp))))
-      (smtpmail-send-data-1 process sending-data))))
+      (smtpmail-send-data-1 process sending-data))
+    (progress-reporter-done pr)))
 
 (defun smtpmail-deduce-address-list (smtpmail-text-buffer header-start 
header-end)
   "Get address list suitable for smtp RCPT TO: <address>."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]