Emacs メッセージ: 送信したメールを保存する

Emacs メッセージ: 送信したメールを保存する

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 安全なファイル名の文字正規表現 "[[:alnum:]-_!.@]"
  「安全なファイル名」

(defun my-clean-filename (ファイル名)
  (マップ連結
   (lambda (ch) (または (when (string-match my-safe-filename-char-regex (char-to-string ch)) (char-to-string ch)) "-"))
   ファイル名 "") )

(メッセージ保存関数 () を定義します)
  「メッセージを`gnus-article-save-directory'に保存する」
送信に成功しました。メールが拒否され、紛失した可能性があります。
完全に保存します。この機能は私のために保存します。」
  (ただし、(eq メジャーモード 'メッセージモード)
    (エラー「非メッセージ モード バッファで my-message-save を呼び出そうとしました」)
  (ディレクトリ作成、gnus-article-save-directory t)
  (let ( (buf (現在のバッファ))
         (フィールド-to (my-clean-filename (または (メッセージ取得フィールド "ニュースグループ") (メッセージ取得フィールド "宛先"))))
         (フィールド件名 (my-clean-filename (メッセージ取得フィールド "件名")))
         ファイル )
    (setq ファイル (連結 gnus-article-save-directory "/" (フォーマット時刻文字列 "%F_%T") "_" フィールドから "_" フィールド件名))
    (一時ファイルファイル付き
      (挿入バッファ buf)
      )) )
(add-hook 'message-sent-hook 'my-message-save)

また、私が使用しているメッセージ送信フックの代わりにメッセージ送信フック

関連情報