[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Rant - Emacs mail is not user friendly
From: |
Kelly Dean |
Subject: |
Rant - Emacs mail is not user friendly |
Date: |
Sun, 16 Nov 2014 12:18:41 +0000 |
> In particular, mail
> queuing is about as complex as things get. MUAs normally delegate
> queuing to the MTA (that's how I handle disconnected operation on my
> laptop, for example, and that's the *only* reason I run Postfix on my
> laptop), and in that sense feedmail.el is a hack.
It doesn't seem very complex, at least on the user side of things. You might
want to consider msmtp instead of Postfix on your laptop.
> I'm sure you have good reason for doing that,
Yes. Emacs on my machine doesn't have Internet access.
> but that is a very unusual use case.
I certainly hope not! The usual case is that a person's instance of Emacs has
access to his data (otherwise, Emacs wouldn't be very useful); if my use case
is unusual, that means the usual case is that his Emacs has access not only to
his data, but also to the Internet. With a program like Emacs serving as a
bridge, that means his data isn't his data, but instead belongs to some Russian
or Chinese hacker, whoever crosses the bridge first, and the original owner is
permitted to retain a copy of the data just due to the hacker's mercifulness,
or maybe just as bait so the hacker can get even more data later. The years
when normal people weren't targets are long gone.
> Bottom line: I think the task you were trying to accomplish is far
> more complex that you are admitting, and has little to do with "user
> friendliness" of Emacs MUAs.
My previous, manual workflow was:
0. Compose a message in Emacs, note a subject and recipient, and note any files
to attach.
1. Log in to webmail, and click ‟compose message”.
2. Copy the message, subject, and recipient from Emacs to the web browser, and
attach the noted files.
3. Click ‟send”.
4. Save the message in Emacs to my file of sent messages (in anticipation of
the webmail service's betrayal).
That was inconvenient, so I decided a better workflow would be:
0. Compose a message in Emacs in standard format, with Subject and To headers
separated from the body by a blank line.
1. Add the From, Date, and Message-ID headers.
2. Save the message to a file foo in an outbox directory.
3. Run ⌜msmtp -t < outbox/foo⌝
4. If #3 succeeds, then run ⌜mv outbox/foo sent/foo⌝
The Emacs mail-sending functionality I wanted was simply automation of steps #1
(plus let me attach files) and #2 of the better workflow, without also doing
steps #3 and #4. That's hardly complex, and in fact is simply _omission_ of the
last two steps that MUAs ordinarily do (or equivalents thereof). I looked in
the Emacs manual, and it said Emacs can do what I wanted, and said to read
feedmail.el to learn how. Nowhere did the manual warn ‟Here be dragons”; had I
known to avoid feedmail, that would have saved me the day that I wasted on it.
For me, Emacs assists with step #0 except that the ⌜--text follows this line--⌝
is left in, it automates step #1 except that the Message-ID is broken, and it
automates step #2 except that it leaves the draft in place after queuing the
message.
I eventually figured out that I don't need feedmail at all. The broken
Message-ID is just because Emacs (in message.el; not feedmail's fault) rejects
my ‟localhost” hostname (the machine has no network connection, so it needs no
hostname), and the other things are fixable with just a few lines:
(defun delete-mail-header-separator ()
"Delete `mail-header-separator'. This function copied from top of
`message-send-mail-partially' in Emacs's message.el."
(goto-char (point-min))
(re-search-forward
(concat "^" (regexp-quote mail-header-separator) "\n"))
(replace-match "\n"))
(defcustom message-outbox-directory
(file-name-as-directory (expand-file-name "outbox" message-directory))
:type 'directory)
; mv-rename copied from
http://code.activestate.com/recipes/578116-move-files-with-rename-if-required/
(defun queue-message-to-outbox ()
(let ((filename (expand-file-name "out.mail" message-outbox-directory)))
(delete-mail-header-separator)
(write-file filename)
(shell-command (concat "mv-rename " filename " "
message-outbox-directory))))
(defun discard-draft ()
(delete-file (buffer-file-name)))
(setq message-send-mail-function 'queue-message-to-outbox)
(add-hook 'message-sent-hook 'discard-draft)
Also I had to add ⌜(pushnew '(utf-8 . 8bit) mm-body-charset-encoding-alist)⌝ to
my init file to make Emacs stop mangling the text. (Yes I know, the mangling is
intended as a preemptive surrender to the administrators of broken MTAs that
used to dominate the Internet, but those seem to have been mostly vanquished
now. At least my messages appear to be getting to the mailing list with no
problem.)
And Emacs doesn't like it if I open sent/foo that has the ⌜--text follows this
line--⌝ deleted and switch to message-mode and try to resend it, so I have to
put that back in this case. I don't know what the point of it is, but it's a
minor inconvenience and I've already wasted enough time on Emacs email, so I'll
live with it.
Last problem that I do care about is that Emacs keeps inserting line breaks
after 72 characters, so I have to switch out of message-mode or copy/paste from
another buffer to make it stop doing that because I can't find the setting to
turn it off. Why is it turned on by default? Modern email readers do have
word-wrap, after all. Even Emacs.
- Rant - Emacs mail is not user friendly, Kelly Dean, 2014/11/15
- Rant - Emacs mail is not user friendly, Stephen J. Turnbull, 2014/11/15
- Re: Rant - Emacs mail is not user friendly, Richard Stallman, 2014/11/17
- Re: Rant - Emacs mail is not user friendly, Stephen J. Turnbull, 2014/11/18
- Re: Rant - Emacs mail is not user friendly, Richard Stallman, 2014/11/21
- Re: Rant - Emacs mail is not user friendly, Stefan Monnier, 2014/11/21