如何让 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) )))) (添加钩子“消息发送钩子”我的消息保存)
另请注意,我使用消息发送钩子代替消息发送钩子。