Как заставить Emacs Message ( C-x m
) сохранять исходящие письма?
Есть ли стандартный способ сделать это?
Конечно, можно C-x C-s
, но это неэффективно и легко забывается, кроме того, вы не можете быть на 100% уверены, что письмо действительно отправлено: вы могли внести какие-то изменения в последнюю минуту, о которых позже забыли.
Можно ли вызвать этот ( save-buffer
) из хука «отправить сообщение» и автоматизировать его? (Например text-mode-hook
.) Если да, то какой хук? (Как получить хуки режима?)
BCC
про себя: не очень элегантно?
FCC
: кажется, это лучшее решение, однако его необходимо автоматизировать, как вызов, так и сгенерировать хорошее имя файла.
решение1
Только что заставил это работать. Введите .emacs
:
(defun save-sent-mail ()
(write-file (format-time-string "~/Mail/sent/%Y-%m-%d_%T") nil) )
(add-hook 'message-send-hook 'save-sent-mail)
решение2
gcc-self
Вы можете задать переменную T
для любых групп, которые хотите архивировать.
См. документацию
здесь. (или (gnus) Group Parameters
)
EDIT:
gcc-self
это не «классическая» переменная, ее нужно устанавливать через
gnus-parameter
.
(setq gnus-parameters
'((".*"
(gcc-self . t))))
решение3
Я использую более сложное решение:
(defconst my-safe-filename-char-regex "[[:alnum:]-_!.@]" «Безопасные имена файлов».) (defun my-clean-filename (имя_файла) (mapconcat (лямбда (ch) (или (когда (строка-соответствует моему-безопасному-имя-файла-char-regex (символ-в-строку ch)) (символ-в-строку ch)) "-")) имя файла "") ) (defun my-message-save()) «Сохранить сообщение в `gnus-article-save-directory' после успешной отправки. Возможно, что почта отклонена и я потерял это полностью, эта функция сохрани ее для меня." (если только (eq major-mode 'message-mode) (ошибка "Попытка вызвать my-message-save в буфере, отличном от режима сообщений")) (make-directory gnus-article-save-directory t) (пусть ((буф (текущий-буфер)) (field-to (my-clean-filename (или (message-fetch-field "Newsgroups") (message-fetch-field "To")))) (field-subject (my-clean-filename (message-fetch-field "Subject"))) файл ) (setq file (concat gnus-article-save-directory "/" (format-time-string "%F_%T") "_" field-to "_" field-subject)) (с файлом-temp-file (вставить-буфер buf) ))) (add-hook 'message-sent-hook 'my-message-save)
Также обратите внимание, что я используюсообщение-отправлено-крючоквместосообщение-отправить-крючок.