I recently needed to send an email to many people1.
Putting all of them into the BCC field did not work (mail rejected by provider) and when I split it into 2 emails, many did not see my mail because it was flagged as potential spam (they were not in the To-Field)2.
I did not want to put them all into the To-Field, because that would have spread their email-addresses around, which many would not want3.
So I needed a different solution. Which I found in the extensibility of emacs and wanderlust4. It now carries the name wl-draft-send-to-multiple-receivers-from-buffer.
You simply write the email as usual via wl-draft, then put all email addresses you want write to into a buffer and call M-x wl-draft-send-to-multiple-receivers-from-buffer. It asks you about the buffer with email addresses, then shows you all addresses and asks for confirmation.
Then it sends one email after the other, with a randomized wait of 0-10 seconds between messages to avoid flagging as spam.
If you want to use it, just add the following to your .emacs:
(defun wl-draft-clean-mail-address (address)
(replace-regexp-in-string "," "" address))
(defun wl-draft-send-to-multiple-receivers (addresses)
(loop for address in addresses do
(progn
(wl-user-agent-insert-header "To"
(wl-draft-clean-mail-address address))
(let ((wl-interactive-send nil))
(wl-draft-send))
(sleep-for (random 10)))))
(defun wl-draft-send-to-multiple-receivers-from-buffer
(&optional addresses-buffer-name)
"Send a mail to multiple recipients - one recipient at a time"
(interactive "BBuffer with one address per line")
(let ((addresses nil))
(with-current-buffer addresses-buffer-name
(setq addresses (split-string (buffer-string) "\n")))
(if (y-or-n-p (concat "Send this mail to "
(mapconcat 'identity addresses ", ")))
(wl-draft-send-to-multiple-receivers addresses))))
Happy Hacking!