使用带有EMAIL和Message包的Emacs的多个电子邮件帐户

时间:2013-02-20 20:29:41

标签: email emacs

我正在尝试准备RMAIL和Emacs来支持多个电子邮件帐户。我已经有一个解决方案,可以根据电子邮件的 From 字段使用不同的SMTP服务器(基于EmacsWiki中的信息),但我目前必须设置 From手动字段。

我想要的是在回复RMAIL中的某人时自动设置 From 字段(即回复发送到 account1@example.net 的电子邮件时,设置撰写邮件缓冲区中的 account1@example.net )。我将Message包用作mail-user-agent。 Gnus有一个类似的功能叫gnus-posting-styles

我需要的确如下:

  1. 在RMAIL摘要上按rM-x rmail-reply时,请查找 account1@example.net account2@example.net 在回复邮件的ToCcEnvelope-ToX-Origintal-ToDelivered-To字段中,并存储在某个变量中找到的第一个;

  2. 已在消息缓冲区中撰写电子邮件,自动将“发件人”字段设置为先前存储的值。

  3. 有办法执行1?

    谢谢!

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的范围,以便它只能更改邮件标题中的内容。