你如何生成一个动态“回复”(和“From:”)报头中的emacs /角马基于创建的消息的消息ID? 我想用外部(perl的)脚本生成动态+detail
基于零件“传递消息-ID:”首标。
user+detail@example.net
我已成功地创造与我的外部脚本生成的内容的标题。 该脚本将获取新闻组的名称作为命令行参数。 我想通过它的值邮件ID了。
我当前的代码
〜/的.emacs:
'(gnus-posting-styles ("^pl\\.test$" ("Reply-To" message-make-reply-to)))
〜/ .gnus
(defun message-make-reply-to()
(my-script ".../reply-to.pl" (message-fetch-field "Message-Id")))
(defun my-script(path &optional param) ....
问题是:脚本没有收到消息ID作为其参数(我的剧本被正确地明确设置参数)
;; Make sure the Message-ID header is present in newly created messages
(setq message-generate-headers-first '(Message-ID))
;; Prevent emacs from resetting the Message-ID before the message is sent.
(setq message-deletable-headers
(remove 'Message-ID message-deletable-headers))
(setq gnus-posting-styles
'(("^pl\\.test$"
("Reply-To" '(message-make-reply-to)))))
注意周围的额外的报价和括号message-make-reply-to
。 对此的解释是,该功能在不同的时间运行,取决于它是否给了作为一个符号或为带引号的S-表达。
- 如果为给定的符号,当一个lambda功能被添加到它运行
message-setup-hook
。 这种情况发生在一message-mode-hook
,即创建并切换到右后新的缓冲区message-mode
。 造成这种情况的原因是一些野生创建lambda函数的引用中值/ unquoting。 - 如果作为引用sexpr给定,评价被延迟,直到之后的缓冲器填充有初始值。 这是接近它的消息建立运行最后一个代码。
另一种解决方案(无gnus-posting-styles
)
另外,在新的头应该被添加到每一个新的消息的情况下, Reply-To
头也可以使用所设定的message-header-setup-hook
。 自定义钩需要定义添加的报头为每个新的信息。
(defun reply-to-message-header-setup-hook ()
(let* ((msg-id (message-fetch-field "Message-ID"))
(reply-to (my-script ".../reply-to-pl" msg-id)))
(message-add-header (concat "Reply-To: " reply-to))))
;; Call the hook every time a new message is created
(add-hook 'message-header-setup-hook 'reply-to-message-header-setup-hook)
;; Make sure the Message-ID header is present in newly created messages
(setq message-generate-headers-first '(Message-ID))