unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
[parent not found: <emacs-mail-is-unusable-0@[87.69.4.28]>]
[parent not found: <54670009.027ce00a.0184.ffffdfd3SMTPIN_ADDED_BROKEN@mx.google.com>]
* Rant - Emacs mail is not user friendly
@ 2014-11-15  6:54 Kelly Dean
  0 siblings, 0 replies; 25+ messages in thread
From: Kelly Dean @ 2014-11-15  6:54 UTC (permalink / raw)
  To: emacs-devel

Yesterday I decided to try using Emacs for email. For sending messages to my mail server, I'll use a separate program, so I need Emacs just for composing messages, inserting headers including autogenerated Date and Message-ID headers, encoding file attachments, and moving completed messages from my drafts folder to my outbound queue. Section 32.4.1 (Mail Sending) of the manual says to read feedmail.el to learn how to do this.

feedmail.el says:
;; After a long list of options below, you will find the function
;; feedmail-send-it. Hers's the best way to use the stuff in this
;; file:
;;
;; Save this file as feedmail.el somewhere on your elisp loadpath;
;; byte-compile it.  Put the following lines in your init file:
;;
;;     (setq send-mail-function 'feedmail-send-it)
;;     (autoload 'feedmail-send-it "feedmail")
;;
;; If you plan to use the queue stuff, also use this:
;;
;;     (setq feedmail-enable-queue t)
;;     (autoload 'feedmail-run-the-queue "feedmail")
;;     (autoload 'feedmail-run-the-queue-no-prompts "feedmail")
;;     (setq auto-mode-alist (cons '("\\.fqm$" . mail-mode) auto-mode-alist))
;;
;; though VM users might find it more comfortable to use this instead of
;; the above example's last line:
;;
;;     (setq auto-mode-alist (cons '("\\.fqm$" . feedmail-vm-mail-mode) auto-mode-alist))

Um, ok. Done. Though it's already in Emacs's loadpath by default, and already byte-compiled, so I skipped that part. I don't know what a VM is in this context, or why the alternative setting might be more comfortable, so I'm ignoring that part and just hoping it won't be a problem. I searched for ⌜feedmail-vm-mail-mode⌝ and found:
⌜If you are a VM user, you might like feedmail-vm-mail-mode, though you
really don't need that (and it's not particularly well-tested).⌝

Next:
;; If you are using the desktop.el library to restore your sessions, you might
;; like to add the suffix ".fqm" to the list of non-saved things via the variable
;; desktop-files-not-to-save.

I found ⌜FQM stands for feedmail queued message⌝, so why wouldn't I want those to be saved? No explanation. Skipping this part.

Next:
;; If you are using message-mode to compose and send mail, feedmail will
;; probably work fine with that (someone else tested it and told me it worked).
;; Follow the directions above, but make these adjustments instead:
;;
;;     (setq message-send-mail-function 'feedmail-send-it)
;;     (add-hook 'message-mail-send-hook 'feedmail-mail-send-hook-splitter)

Am I using message-mode? Section 32 (Sending Mail, as opposed to Mail Sending in section 32.4.1) of the manual says ⌜To send an email message from Emacs, type C-x m⌝. That runs compose-mail, which creates a buffer in message-mode, so apparently I am. Ok, adjustments made.
Except there doesn't appear to be a message-mail-send-hook, so I omitted that part. The docstring for ⌜feedmail-mail-send-hook-splitter⌝ says ⌜Facilitate dividing `mail-send-hook' things into queued and immediate cases⌝, which isn't a feature I need since I'll only be queuing (no immediate sending), so I guess it won't be a problem that there's no hook to put it on.

Next:
;; If you use message-mode and you make use of feedmail's queueing
;; stuff, you might also like to adjust these variables to appropriate
;; values for message-mode:
;;
;;     feedmail-queue-runner-mode-setter
;;     feedmail-queue-runner-message-sender

The docstring for the first var says ⌜A function to set the proper mode of a message file⌝. It also says ⌜Most people want `mail-mode'⌝, and that's the default, so I guess I don't want to adjust it. Similarly for the second var.

Ok, C-x m, write a test message, C-x C-s, C-c C-s RET C-x k RET. It adds the appropriate headers, and in ~/mail/q/ I get a fqm file, yay. Except, it still has the ⌜--text follows this line--⌝ from the draft, so it isn't ready for sending. Why? Dunno.
And the draft is still in ~/Mail/drafts (capitalized ⌜Mail⌝, not lowercase ⌜mail⌝ like for the queue, for no apparent reason), which is illogical, since the message has already been completed and queued for sending, and leaving a copy in drafts will just confuse me later about which messages have or haven't already been sent. To decide whether I want to move the draft message to ~/mail/sent or delete the draft message and copy the queued message to ~/mail/sent, I re-open the draft to compare it to the queued version. I notice the draft isn't in message-mode anymore. What if I wanted to re-send it (assuming it should still be in drafts in the first place)? Ok, M-x message-mode. C-c C-s RET C-x k RET, and it queues another.
Then I notice: re-open the draft, M-x message-mode, C-c C-s RET, but don't kill the buffer this time. C-c C-s RET again, and this time it asks for confirmation to resend, which makes sense because from Emacs's point of view, the message was already sent, but why didn't it ask for confirmation for the previous resend? Why did it forget that the message was already sent? I discover that I don't even have to kill the buffer to make it forget; I can just do M-x message-mode again. A mail program that can't remember whether it has already sent a message is demented. I didn't even modify the default locations for saving messages; it simply failed to save that flag anywhere or to record it implicitly e.g. by moving sent messages to ~/mail/sent.

I've already queued enough copies of this test message, so this time I answer ‟no” to the ‟resend” question. It dumps me into the debugger (I have debug-on-error set to t to try to help debug all the Emacs bugs that keep biting me) because it's using error in a place where in modern Emacs it should now be using user-error, so now I have to add yet another patch to my growing pile of private fixes (including for actual bugs, not just user-error updates) that I've been asked not to submit for Emacs because saying my work is in the public domain isn't good enough, even though it apparently was good enough for the author of feedmail (see the statement ⌜This code is hereby released into the public domain⌝ in feedmail.el--which I never would have bothered to read in the first place if feedmail's documentation were in the manual).

The Message-ID header always includes ⌜i-did-not-set--mail-host-address--so-tickle-me⌝, so I do
(setq mail-host-address "localhost")
and try again. No luck, so let's try something else. I find the feedmail-message-id-generator option, which says this:

⌜Specifies the creation of a Message-Id: header field.

If nil, nothing is done about Message-Id:.

If t, a Message-Id: header of a predetermined format is produced, but
only if there is not already a Message-Id: in the message.  A value of
t is equivalent to using the function feedmail-default-message-id-generator.

If neither nil nor t, it may be a string, a fiddle-plex, or a function
which returns either nil, t, a string, or a fiddle-plex (or, in fact,
another function, but let's not be ridiculous).  If a string, it
should be just the contents of the header, not the name of the header
itself nor the trailing newline.  If a function, it will be called
with one argument: the possibly-nil name of the file associated with
the message buffer.⌝

I try that. Still no luck; I still get the standard Message-ID header. Oh, but after reading the definition of the function feedmail-fiddle-message-id, I discover that despite the docstring, feedmail-message-id-generator _can't_ be function, but it can be a symbol fbound to a function. Ok, I change my lambda to a named function.
Still no luck. Digging further, I discover that feedmail-fiddle-message-id is only called from feedmail-send-it-immediately, which I don't use, because I'm only queuing, not sending immediately. Did the docs say that feedmail-message-id-generator wouldn't be used when just queuing rather than sending immediately? Of course not.

The documentation is ridiculous, it's in the wrong place, it's outdated, the code doesn't work, it's outdated too, and there's no point in trying to fix any of it because my work is unwanted anyway. Even the worst webmail service I've ever used was more user-friendly than this, which is why I keep using them even though they routinely betray me by locking me out of my account for some stupid little thing like lying about my niece's name because it's none of Yahoo's business or logging in from a new IP address and failing to tell Google about it in advance, forcing me to create new account and lose any mail stored in the previous one that I didn't paranoidly download an offline copy of after every mail session in anticipation of their inevitable betrayal. At least Google let me back in after I traveled back to where I could log in from the previous IP address again. I'm telling you all this in order to waste your time from reading this message so you'll feel my pain, or will at least tell me you do and I'll vote for you or something.



^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2014-12-19 20:01 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <emacs-mail-is-unusable-0>
2014-11-15 11:46 ` Rant - Emacs mail is not user friendly Stephen J. Turnbull
2014-11-16 12:18   ` Kelly Dean
2014-11-16 17:49     ` David Caldwell
2014-11-16 22:52     ` Stephen Berman
2014-11-17  9:48       ` Kelly Dean
2014-11-16 23:22     ` Stephen J. Turnbull
2014-11-17 10:06       ` Kelly Dean
2014-11-17 13:59         ` Ted Zlatanov
2014-11-17 19:54       ` Richard Stallman
2014-11-18  5:30         ` Stephen J. Turnbull
2014-11-21 14:51           ` Richard Stallman
2014-11-21 16:07             ` Stefan Monnier
2014-11-22  5:41               ` Stephen J. Turnbull
2014-11-22 15:51                 ` Stefan Monnier
2014-11-22 16:13                   ` Stephen J. Turnbull
2014-11-22 11:08               ` Richard Stallman
2014-11-22 15:53                 ` Stefan Monnier
2014-11-22  5:40             ` Stephen J. Turnbull
2014-11-22 11:09               ` Richard Stallman
2014-11-21 16:22           ` Emacs dependencies vs. security Ivan Shmakov
2014-12-19 17:22           ` application/x-patch MIME type used by Gnus? (was: Rant - Emacs mail is not user friendly) Reiner Steib
2014-12-19 20:01             ` Stephen J. Turnbull
     [not found] <emacs-mail-is-unusable-0@[87.69.4.28]>
2014-11-15  8:27 ` Rant - Emacs mail is not user friendly Eli Zaretskii
     [not found] <54670009.027ce00a.0184.ffffdfd3SMTPIN_ADDED_BROKEN@mx.google.com>
2014-11-15  7:54 ` Alexis
2014-11-15  6:54 Kelly Dean

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).