如何讓 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
)
編輯:
gcc-self
不是一個「經典」變量,你必須透過設定它
gnus-parameter
。
(setq gnus-parameters
'((".*"
(gcc-self . t))))
答案3
我使用更複雜的解決方案:
(defconst my-safe-filename-char-regex "[[:alnum:]-_!.@]" “安全檔名。”) (defun my-clean-filename (檔名) (地圖連接 (lambda (ch) (或 (when (string-match my-safe-filename-char-regex (char-to-string ch)) (char-to-string ch)) "-")) 檔案名稱 ””) ) (defun 我的訊息保存 () 「之後將訊息儲存在『gnus-article-save-directory』中 發送成功。有可能郵件被拒絕而我遺失了 完全可以,這個功能幫我保存一下。 (除非(eq主要模式'訊息模式) (錯誤“嘗試在非訊息模式緩衝區中調用我的消息保存”)) (make-directory gnus-article-save-directory t) (let ( (buf (目前緩衝區)) (field-to (my-clean-filename (或 (message-fetch-field "新聞群組") (message-fetch-field "To")))) (欄位主題(我的乾淨檔案名稱(訊息取得欄位「主題」))) 文件 ) (setq file (concat gnus-article-save-directory "/" (format-time-string "%F_%T") "_" field-to "_" field-subject)) (帶有臨時文件的文件 (插入緩衝區 buf) )))) (添加鉤子“訊息發送鉤子”我的消息保存)
另請注意,我使用訊息發送鉤子代替訊息發送鉤子。