Subject: smtpmail.el aborts on transient errors

From: Brian Sniffen <[email-masked]>
Date: Tue, 22 Jan 2019 23:09:08 -0500

smtpmail.el treats all return codes over 400 as errors, and aborts.  But RFC 821 and successors call the 400-series “transient” errors and suggest retrying immediately.  Some mail servers, including current MS Exchange, use 400-series errors for load limiting.  The user can just repeat C-c C-c until the mail goes through... or Emacs SMTPmail could loop until the server accepts it.

Retrying is a little tricky in the case of multipart commands like LOGIN, but in general it’s safe to loop for seconds on any command.

-- 
Brian Sniffen