The following will prevent messages to email addresses in
blacklist-addresses
from invoking mml-secure-message-sign
.
(defvar blacklist-addresses nil
"List of email addresses (as strings) to blacklist for
`mml-secure-message-sign'.")
(defun secure-sign-maybe ()
"Use `mml-secure-message-sign' unless the addressee is in the
`blacklist-addresses'."
(let ((addresses (mapcar (lambda (address)
(when (string-match
"\\(<?\\)\\([^@< ]+@[^@> ]+\\)\\(>?\\)"
address)
(match-string 2 address)))
;; (split-string (message-field-value "To")
;; "," t "[[:blank:]]+"))))
(split-string (concat (message-field-value "To")
", "
(message-field-value "Cc"))
"," t "[[:blank:]]+"))))
;; skip secure signing when an address is blacklisted
(unless (delq nil (mapcar (lambda (address)
(car (member address blacklist-addresses)))
addresses))
(mml-secure-message-sign))))
(add-hook 'message-send-hook #'secure-sign-maybe)
Right now, the code looks for addresses in the "To" and "Cc"
fields. If you want it to check only the "To" field, comment out
the existing call to split-string
and uncomment the commented
version.