emacsでメールを読み書きする


77

emacsを使用してメールを読み書きするにはどうすればよいですか?

この質問は、emacsを使用して電子メールを処理したいユーザーに標準的な着陸地点を提供することを目的としています。

回答ごとに1つのパッケージ/ソリューションのみを、できるだけ詳細に投稿してください。役立つ情報には次のものがあります。

  • 要件、サポートされている環境
  • サポートされているメソッド(読み取りおよび/または送信)
  • サポートされているプロトコル(ポップ、imap、smtp、ローカルメールのセットアップ...)
  • サポートされている認証
  • パスワードストレージ(なし、プレーンテキスト、外部ウォレットへのアクセス...)
  • オフラインサポート(なし、積極的なキャッシュ、オンデマンド...)
  • アタッチメントを使用するのは簡単ですか?(ドラッグアンドドロップで追加、ダウンロード、emacsまたは別のアプリケーションで開く...)
  • セットアップ手順(詳細なほど良い)、スクリーンショット...
  • 追加の電子メール機能(アーカイブ、フィルタリング、フォルダー)のサポート
  • 追加の関連機能(連絡先、RSSフィード)のサポート...機能が電子メールにどれだけ密接に関連しているかによって、ここで詳しく説明する必要はありません。

ユーザーが外部プロセスと直接対話する必要がない限り、メールを処理するために外部ツールを必要とするソリューションは歓迎されます。

例:muttのフロントエンドとして機能するパッケージはトピックに基づいていますが、thunderbirdユーザーがemacsを使用してメッセージを書くことを可能するソリューションはそうではありません。

議論のためのメタ投稿

回答へのクイックリンク(アルファベット順):


2
添付ファイルを追加するためのドラッグアンドドロップをサポートするemacsで電子メールを読む方法はありますか?これは、電子メールクライアントでの生活を本当に簡素化する機能です。
名前

1
@NameはEmacsでもドラッグアンドドロップをサポートしていますか?
PythonNut

@PythonNutよく、バッファにファイルをドラッグアンドドロップすると、Emacsはそのファイルを開きます。そのため、原則としてEmacsはシステムからのドラッグアンドドロップ呼び出しを処理できるようです。
名前

@PythonNutはい、EmacsはDnDをサポートしています。こちらこちらをご覧ください。
バジル

@Name:helmやivyを使用して添付ファイルを選択するのは、ドラッグアンドドロップするよりもはるかに簡単ですが、個人的な好みの問題です。
オマー

回答:


39

Mu4eを使用します。これも十分に文書化されており(Info経由でも)、このドキュメントの執筆時点で積極的に開発されています。

Mu4eはmuのアドオンとして出荷されます。これは、「Maildirおよびメッセージファイル、特に電子メールメッセージのインデックス作成と検索を行うためのツールセット」です。offlineimapまたはfetchmail連動します。また、Emacsパッケージsmtpmail-multiを使用して、異なる設定で異なるアカウントから送信できるようにします。メールプロバイダーとスムーズに統合するには、をする必要がありapt-get install ca-certificatesます。パッケージ管理バージョンが必要な場合は、でmu自体を取得できますapt-get install maildir-utils

次の「最小構成」など、いくつかの構成例が提供されています。

(require 'mu4e)     
(setq message-send-mail-function   'smtpmail-send-it
      smtpmail-default-smtp-server "smtp.example.com"
      smtpmail-smtp-server         "smtp.example.com"
      smtpmail-local-domain        "example.com")

メールプロバイダーの設定に基づいて、もう少し行う必要があります。特に、実際にメールを取得するには、OfflineIMAPまたはFetchmailを構成する必要があります。以下に示す構成では、2つのアカウントで動作するようにすべてを設定します。1つのアカウントから取得するだけの場合は、mu4eマニュアルに含まれているサンプルの.offlineimaprcを参照できます。

含ま経て(私はその機能を使用していないものの、メッセージまたはカスタム検索へのリンクを捕捉するため、さらには組織の構文を使用してHTML形式のメールを作成するための)Mu4eが組織モードで便利な統合:他のEmacsのパッケージと拡張機能との統合についてはORG -mu4e.el。別個のhelm-mu統合が使用可能ですが、IMOの作業が必要です。solarized.elをテーマにしています。また、mu4e-maildirs-extensionがあり、メールディレクトリごとに既読および未読のメッセージを簡単にカウントできます。にも試していないものがいくつかあります。

これらのサンプル構成は、ドキュメントと一緒に、新しいmu4eユーザーが着手するのに役立ちます。

.offlineimaprc

[general]
accounts = Gmail, Uni
maxsyncaccounts = 3

[Account Gmail]
localrepository = Local
remoterepository = Remote
status_backend = sqlite

[Repository Local]
type = Maildir
localfolders = ~/Maildir/google

[Repository Remote]
type = IMAP
remotehost = imap.gmail.com
remoteuser = other.e.mail@gmail.com
remotepass = TryAndGuess12345
ssl = yes
maxconnections = 1
realdelete = no

# cert_fingerprint = fa88366ccd90cd02f7a5655800226c43c8044ada
# but they change all the time, so...
sslcacertfile = /etc/ssl/certs/ca-certificates.crt

# Folders to get:
#
# In Gmail, filter all current mail that isn't *otherwise*
# filtered into the folder or folders you want to receive/sync.
# Keep that up to date; it will boost efficiency if you would
# otherwise be syncing a very large "Inbox" here.
folderfilter = lambda foldername: foldername in [
             'JUNE2015', 'Drafts', 'Sent']

[Account Uni]
localrepository = UniLocal
remoterepository = UniRemote
status_backend = sqlite

[Repository UniLocal]
type = Maildir
localfolders = ~/Maildir/uni

[Repository UniRemote]
type = IMAP
remotehost = pod666.outlook.com
remoteuser = username@campus.university.ac.uk
remotepass = TryAndGuess9876
ssl = yes
maxconnections = 1
realdelete = no

sslcacertfile = /etc/ssl/certs/ca-certificates.crt

mu4eおよびの構成smtpmail-multi

;;; Replies

(setq message-citation-line-function 'message-insert-formatted-citation-line) 
(setq message-citation-line-format "On %a, %b %d %Y, %f wrote:\n")

;;; smtp

(add-to-list 'load-path "~/smtpmail-multi")
(require 'smtpmail-multi)
(require 'smtpmail)

(setq smtpmail-multi-accounts
      (quote
       ((uni . ("username@campus.university.ac.uk"
                 "pod666.outlook.com"
                 587
                 "e.mail@uni.ac.uk"
                 nil nil nil nil))
        (gmail . ("other.e.mail@gmail.com"
                   "smtp.gmail.com"
                   587
                   "other.e.mail@gmail.com"
                   starttls
                   nil nil nil)))))

(setq smtpmail-multi-associations
      (quote
       (("other.e.mail@gmail.com" gmail)
        ("e.mail@uni.ac.uk" uni))))

(setq smtpmail-multi-default-account (quote gmail))

(setq message-send-mail-function 'smtpmail-multi-send-it)

(setq smtpmail-debug-info t)
(setq smtpmail-debug-verbose t)

;;; MU4E config

(require 'shr)

(defun shr-render-current-buffer ()
  (shr-render-region (point-min) (point-max)))

(setq mu4e-compose-dont-reply-to-self t)
(setq mu4e-compose-signature-auto-include nil)
(setq mu4e-html2text-command 'shr-render-current-buffer)

(setq mu4e-mu-binary "~/mu/mu/mu")

(setq user-full-name "Hello World")
(setq user-mail-address "other.e.mail@gmail.com")

(setq mu4e-hide-index-messages t)

(setq
   mu4e-maildir       "~/Maildir"   ;; top-level Maildir
   mu4e-sent-folder   "/sent"       ;; folder for sent messages
   mu4e-drafts-folder "/drafts"     ;; unfinished messages
   mu4e-trash-folder  "/trash"      ;; trashed messages
   mu4e-refile-folder "/archive")   ;; saved messages

(setq
   mu4e-get-mail-command "offlineimap"   ;;  -a Uni to just do university acc't
   mu4e-update-interval nil)             ;; 300 to update every 5 minutes

(setq mu4e-bookmarks
  '( ("flag:unread AND NOT flag:trashed"                "Unread messages"        ?u)
     ("date:today..now"                                 "Today's messages"       ?t)
     ("date:7d..now"                                    "Last 7 days"            ?w)
     ("date:1d..now AND NOT list:emacs-orgmode.gnu.org" "Last 1 days"            ?o)
     ("date:1d..now AND list:emacs-orgmode.gnu.org"     "Last 1 days (org mode)" ?m)
     ("maildir:/sent"                                   "sent"                   ?s)
     ("maildir:/uni/INBOX AND date:7d..now"             "University Last 7 days" ?g)
     ("maildir:/google/JUNE2015 AND date:7d..now"       "Gmail Last 7 days"      ?c)
     ("mime:image/*"                                    "Messages with images"   ?p)))

(setq mu4e-maildir-shortcuts
      '( ("/google/JUNE2015" . ?c)
         ("/uni/INBOX"       . ?g)
         ("/sent"            . ?s)))

(setq mu4e-user-mail-address-list (list "other.e.mail@gmail.com" "e.mail@uni.ac.uk"))

(setq message-kill-buffer-on-exit t)

(setq
 mu4e-view-show-images t
 mu4e-view-image-max-width 800)

;; A little demo function for switching accounts
(defun switch ()
  (interactive)
  (save-excursion (goto-char (point-min))
                  (forward-char 19)
                  (cond
                   ((looking-at "other.e.mail@gmail.com")
                    (delete-region (match-beginning 0) (match-end 0))
                    (insert "e.mail@uni.ac.uk")
                    (buffer-face-set 'default))
                   ((looking-at "e.mail@uni.ac.uk")
                    (delete-region (match-beginning 0) (match-end 0))
                    (insert "other.e.mail@gmail.com")
                    (buffer-face-set 'bold-italic))
                   (t nil))))

(add-hook 'mu4e-compose-mode-hook (lambda () (buffer-face-set 'bold-italic)))

;;; Saving outgoing mail

;; Following tip from documentation for `mu4e-sent-messages-behavior' - see also
;; http://www.djcbsoftware.nl/code/mu/mu4e/Saving-outgoing-messages.html
;; for some related points, but not necessary to do things both ways.

(setq message-sendmail-envelope-from 'header)

(setq mu4e-sent-messages-behavior
      (lambda ()
    (if (string= (message-sendmail-envelope-from) "other.e.mail@gmail.com")
        (progn (message "Delete sent mail.")
           'delete)
      (progn (message "Save sent mail.")
         'sent))))

;;; Org mode compatibility

;; Use `org-store-link' to store links, and `org-insert-link' to paste them

(require 'org-mu4e)

;;; That's all

(provide 'my-mu4e-config)

スクリーンショット:検索用語リストを使用したブラウジング:emacs-orgmode.gnu.org

組織リストの閲覧


1
Windows emacsをサポートしていますか?
Leu_Grady

1
@ user3173715、OfflineIMAPはWindowsを公式にサポートしていませんが、「一部のユーザーは機能しました」。Fetchmailは別のオプションであり、このUnixmail for Windowsポートの一部です。mu自体は「CおよびC ++の一部(Xapianとのインターフェース用)」で記述されており、「ネイティブMicrosoft Windowsサポート用の2つのオプション」があります。そのようなコードの断片を組み立てるのが快適であれば、おそらく動作させることができます。私自身はWindowsユーザーではないので、これ以上説明することはできません。他の誰かがそれについてさらにコメントするかもしれません。
ジョーコルネリ

2
gnus-userがmu4eに切り替えたい、またはmu4eに切り替えた理由とその理由を説明するWebサイトがありますか?私は好奇心が強いです、それは現在人気があるようです。
ポリツァ

2
@Malabarba、私はmu4eドキュメントから「最小構成」を追加し、それらの簡単な例にリンクしました.offlineimaprc
ジョーコルネリ

2
ユーザーがそれを見る方法に応じて、重要な機能またはディールブレーカーは、mu サーバーが起動後に常に実行されmu4e、これが私のテストでEmacsのパフォーマンスに劇的に影響し、使用する必要がある別のバッファーを開くなどの他のユーティリティを使用できないことですaspellmu サーバーとの通信は焼き付けられた機能であり、無効にできるものではありません。私の意見では、これは設計上の欠陥でありmu、サーバーを24時間365日実行せずに個々の呼び出しで修正する必要がありました。確認するには、M-x list-processes実行後に入力しますM-x mu4e
ローリスト

24

Gnus(すでにEmacsにバンドルされている)を使用する場合は、https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/gnus-guide-en.orgを確認してください

ガイドの概要は次のとおりです。

  • EmacsWikiの最小セットアップを使用するだけで十分です(http://www.emacswiki.org/emacs/GnusGmail)。Gmailだけでなく、あらゆるメールサービス用に設定されています
  • HTMLメールの読み取り/書き込みができます
  • メールフォルダを手動で購読する必要があります
  • C-u Enter任意のメールフォルダーを押して、そのフォルダー内のすべてのアイテムを表示するか、未読メールのみが表示されます
  • 一般的なプロトコルと認証方法がすぐにサポートされます
  • パスワードの保存には、Emacsにバンドルされているeasygpgを使用しました。easygpgは一般的なフレームワークです。そのため、パスワードは暗号化され、オフラインで保存されます。
  • 電子メールのオフラインローカルキャッシュはGnusでかなり前にサポートされています
  • 添付ファイルの追加/削除/ダウンロードは簡単です。キーボードのみを使用しているため、ドラッグアンドドロップのことはわかりません。サードパーティのアプリケーションで添付ファイルを開くには、「mailcap-mime-data」のセットアップが必要です。
  • ローカル/リモートでのメール検索はすぐにサポートされます
  • フィルター/アーカイブがサポートされています。しかし、独立したメールフィルターソフトウェアであるpopfileをお勧めします。popfileを使用するのは、他のメールフィルタ(Gmail独自のフィルタなど)よりもずっと優れているからです。
  • 連絡先管理はbbdb(別のEmacsプラグイン)によって処理され、gmail2bbdb.el(私が作成)を使用してGmailから連絡先をインポートすることも簡単です。
  • rssを読むには、代わりにelfeedを使用することをお勧めします(GnusはGweneサービスを使用してこれを行うことができますが、elfeedは簡単にセットアップでき、すぐに使用できる機能があります)。Gweneは強力ですが、はるかに多くの知識が必要です(私のGnusガイド、emacs-w3mのAPI、hydra、Lispプログラミング、Linux CLIツール、シェル)
  • Gnusはすべてのプラットフォームをサポートしています。ただし、Windowsでは、OpenSSHおよびGnuTLSのバイナリを環境変数PATHに追加する必要があります。これらの2つのパッケージは、Cygwinを介してインストールできます。EmacsはWindowsネイティブバージョンである可能性があります。Emacs 26以降、すべての依存関係が1つのバンドルにパッケージ化されました。

その他のヒントについては、ガイドをご覧ください。

IMO、GmailのWeb UI(または他のメールサービスのWeb UI)を完全にGnusに置き換えない方がいいでしょう。Gnusをマスターするためのベストプラクティスは、GnusをGmailの拡張機能として扱うことです。したがって、Gnusが特定のことを行うことができれば、いつでもWeb UIにフォールバックできるため、イライラすることはありません。

スクリーンショット:

ここに画像の説明を入力してください


4
リストにgnusを追加してくれたことに感謝します。gnusは、emacsで電子メールを使用する標準的な方法の1つと思われます。しかし、現時点では、この回答はリンクのみの回答以上のものではありません。そのリンク(または他の場所!)から情報を抽出して質問にさらに正確に答えると、リンクの腐敗を防ぐだけでなく、他のメールパッケージとの比較にも役立ちます。
T. Verron

また、新しい訪問者が簡単にルックアンドフィールの感覚をつかむことができるように、スクリーンショットは素晴らしいでしょう。
ジョーコルネリ

11

あまりない

emacsのメールにはnotmuchを使用しています。

notmuch-helloビューのスクリーンショット

ファイルごとに1つのメッセージを保存する必要があるローカルメールでのみ動作し、smtpサーバーが配信するmaildirフォルダーを使用します。コンピューター上のmaildirフォルダーにメールを同期する他のソリューションに対処できるはずです。

使用を開始するには、コマンドラインベースとemacsインターフェースをインストールし、を呼び出してショートテキストウィザードで設定を開始します。タグ付けしたスレッド(メーリングリストなど)から他のメールnotmuchを呼び出しnotmuch newてタグ付けするフィルタリングスクリプトへの通常の呼び出しを設定します無視したいスレッド)またはメールデーモンによってソートされたメールを特別なmaildirにタグ付けします。emacsではM-x notmuch、以前からインターフェースを見るために呼び出します。インターフェイスのほとんどすべての設定は、emacsのカスタマイズインターフェイスを介して実行できます。

それは通りのメッセージダウンロードしていない他のシステムからそれを離れて電子メールを送信するためのビルトインサポートはemacsを使用してから、内蔵の無認証またはプロトコルを持っていません。

それ自体はフォルダを使用しませんが、実際には、保存された検索はメールを読むためにそれらのように感じます。notmuch-helloビューで使用されているすべてのタグがリストされるため、メールのタグ付け方法を決定すると、リストが自動的に更新されます。大量のメールがある場合に速度が低下しないため、アーカイブは必要ありません。

notmuchの省略部分は、高速の全文検索とタグ付きおよびスコープ検索の可能性を別として、一致をリストし、メッセージに回答します。サーバー上のターミナルやリモートシェルを介してドラッグアンドドロップを使用する場合、ドラッグアンドドロップがどのように機能するかわかりません。

メッセージのスレッド内のメッセージビュー

検索結果の代替ツリービュー

その他のスクリーンショット:https : //notmuchmail.org/screenshots/

それについて最も難しい部分は、2台の異なるコンピューターであまり使用しない場合に同期タグを使用することですが、人々はそれを回避しており、メーリングリストから私が収集したものからおそらく動作します。または、つまずいたばかりの新しいセットアップについては、https://notmuchmail.org/remoteusage/ご覧ください

ほとんどのLinuxディストリビューション用のパッケージがあり、メーリングリストを介してbazaar環境で開発されています。tarballまたはgitから自己コンパイルする場合、Cコードを使用し、メッセージからの抜粋を保存するためにXapianに依存します。MIMEメールをデコードするためにGMime、メモリ管理用にTalloc、およびzlib(Xapianの依存関係) 。

rss2emailまたはrssフィードをmaildirに変換するソリューションでおそらく機能するでしょう。

コマンドライン経由で使用でき、デフォルトのemacs elispインターフェースとは別に、他の人がmutt(ディスク上のmaildirフォルダーに検索結果をコピー/ハードリンク)またはvimで使用します。

メールの量が自分の量を超えた場合(〜90kメッセージ、あまりメールではない)、実行し続けるにはおそらくメンテナンスが必要になります。


1
Emacs Notmuchは使いやすく、非常に強力で、非常に高速で、学習と設定が非常に簡単です(Gnusよりもはるかに簡単です)。とても満足しています。ただし、Mu4e、mew、またはWanderlustはテストしていません。とにかく、ここにいくつかの素晴らしい記事があります:lwn.net/Articles/705856 wwwtech.de/articles/2016/jul/my-personal-mail-setup
Jorge

6

私は長年にわたってミューの幸せなユーザーでした。

私は長い間、メールの読み書きにemacsを使用していないので、この情報は古くなっているかもしれません。できれば、最近のmewユーザーが記入してください。今のところ、この回答をスタブと考えてください。(コミュニティWikiにするので、他の人がより自由に編集できます。)

何よりもまず、私の経験では、ミュウは速かったです。mewを使用して、膨大なトラフィックのあるメーリングリストを処理するのに困難はありませんでした。

mewのセットアップは、特にstunnelSMTPおよびIMAPサーバーへの暗号化された接続の作成に使用(使用?)するため、少し複雑でした。しかし、基本的には、ファイルを編集し、~/.mew.elmewがそのデータを保持するためのディレクトリを設定するだけです。stunnel(もちろんemacsは別として)依存関係はありません。

ドキュメントは適切なようですが、間違ったセクションを見ていることがよくあります。ただし、メンテナンスは少し遅れてしまったようです。いくつかのバグ修正が時々ありますが、私がしばらく気づいた新しい機能はありません。


詳細を提供しますが、私が言ったように、私は長い間メールにemacsを使用していません。これは主に、HTMLのみでフォーマットされた電子メールのdel濫によるものであり、長期的には後部で大きな苦痛になりました。そのため、最近では、GUIベースのメールクライアントのみを使用しています。
ハラルドハンチェオルセン

それをリストしてくれてありがとう、できれば他のミュウユーザーが来て空白を埋めることができます。HTML形式の電子メールについては、emacsにhtmlレンダラーが同梱されるようになったため、状況が一般的に変わったのでしょうか。
T. Verron

@ T.Verronかもしれない。mewは組み込みのhtmlレンダラーをそのままではサポートしていないと確信しています。ただし、インライン画像の処理方法は大きな疑問です。外部の画像へのリンクであれば問題ありませんが、メッセージに含まれる画像はどうですか?ところで、w3mを使用してHTMLでコード化されたメールを表示するように構成できますが、それをテストすることはできませんでした。
ハラルドハンチェオルセン

5

WANDERLUSThttps : //github.com/wanderlust/wanderlust

特徴:

  • elispのみでの実装。
  • IMAP4rev1、NNTP、POP(POP3 / APOP)、MH、およびMaildirのサポート。
  • Mewなどのフォルダー仕様に基づいたメッセージへの統合アクセス。
  • Mewのようなキーバインディングとマーク処理。
  • スレッドと未読メッセージの管理。
  • サブスクライブされたフォルダーを選択および編集するフォルダーモード。
  • メッセージキャッシュ、切断された操作。
  • MHのようなFcc(Fcc:%Backupが可能です)。
  • MIMEの完全サポート(SEMIによる)。
  • メールとニュースのドラフト編集を同じインターフェースとして。
  • フォルダのリスト用のアイコンベースのインターフェイス(XEmacsおよび> = Emacs 21)。
  • MIME(IMAP4)の大きなメッセージ部分のフェッチをスキップします。
  • サーバー側の検索(IMAP4)、国際化された検索が利用可能です。
  • ワンダーラストを使用した限定されたカスタム検索、またはのような外部のユーティリティなどではなく、仮想フォルダ、muおよびgrep
  • 圧縮フォルダー。
  • 古いメッセージの自動期限切れ。
  • 自動リファイリング。
  • ドラフトテンプレート。

EMACS WIKI:https : //www.emacswiki.org/emacs/WanderLust

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.