我正在尝试准备RMAIL和Emacs来支持多个电子邮件帐户。我已经有一个解决方案,可以根据电子邮件的 From 字段使用不同的SMTP服务器(基于EmacsWiki中的信息),但我目前必须设置 From手动字段。
我想要的是在回复RMAIL中的某人时自动设置 From 字段(即回复发送到 account1@example.net 的电子邮件时,设置从撰写邮件缓冲区中的到 account1@example.net )。我将Message包用作mail-user-agent
。 Gnus有一个类似的功能叫gnus-posting-styles
。
我需要的确如下:
在RMAIL摘要上按r
或M-x rmail-reply
时,请查找 account1@example.net 或 account2@example.net 在回复邮件的To
,Cc
,Envelope-To
,X-Origintal-To
或Delivered-To
字段中,并存储在某个变量中找到的第一个;
已在消息缓冲区中撰写电子邮件,自动将“发件人”字段设置为先前存储的值。
有办法执行1?
谢谢!
答案 0 :(得分:3)
是的,有办法做到这一点。
您需要建议功能rmail-reply
。
以下是一个例子:
(defadvice rmail-reply (around rmail-grab-to-field) "Grab the To field and put in the reply as 'From'." (let ((origin-to (mail-fetch-field "to"))) (progn ad-do-it) (save-excursion (goto-char (point-min)) (perform-replace "^From: \\(.*\\)$" (concat "From: " origin-to) nil t nil 1 nil (point-min) (point-max))))) (ad-activate 'rmail-reply)
您可以在EmacsLisp手册中找到有关advice的所有信息。
上述建议并不完全通用,它取决于您用于发送邮件的模式(我使用消息模式,以及上述代码的工作原理)。
更好的版本还会划分perform-replace
的范围,以便它只能更改邮件标题中的内容。