Читання та запис електронної пошти за допомогою emacs


77

Як ми можемо використовувати emacs для читання та запису електронної пошти?

Це питання має на меті забезпечити канонічну посадкову точку для користувачів, які бажають мати справу з електронною поштою за допомогою emacs.

Будь ласка, опублікуйте лише один пакет / рішення за кожну відповідь з якомога більше деталей. Інформація, яка може бути корисною, включає:

  • вимоги, підтримуване середовище
  • підтримувані методи (читати та / або надсилати)
  • підтримуються протоколи (pop, imap, smtp, локальна настройка пошти ...)
  • підтримується автентифікація
  • зберігання паролів (немає, звичайний текст, доступ до зовнішнього гаманця ...)
  • підтримка в режимі офлайн (немає, агресивне кешування, на вимогу ...)
  • як легко користуватися вкладеннями? (додавання з перетягуванням, завантаження, відкриття за допомогою emacs або іншої програми ...)
  • інструкції з налаштування (чим детальніше, тим краще), скріншоти ...
  • підтримка додаткових функцій електронної пошти (архівування, фільтрування, папки)
  • підтримка додаткових пов’язаних функцій (контакти, RSS-канали) ... тут не потрібно бути надто детальними, залежно від того, наскільки тісно стосується ця електронна адреса

Вітаються рішення, що потребують зовнішнього інструменту для обробки пошти, доки користувачеві не потрібно безпосередньо взаємодіяти із зовнішнім процесом.

Приклади: пакет, який виступає в якості передумови для mutt, є темою, а рішення, що дозволяє користувачеві-громовержцю написати своє повідомлення за допомогою emacs , не є.

Мета-пост для обговорення.

Швидкі посилання на відповіді (в алфавітному порядку):


2
Чи є спосіб прочитати електронну пошту з emacs, що підтримує перетягування, щоб додати вкладення? Це функція, яка дійсно спрощує життя клієнту електронної пошти.
Ім'я

1
@Name чи Emacs підтримує навіть перетягування?
PythonNut

@PythonNut добре, якщо я перетягую файл на буфер, Emacs відкриє цей файл. Тому, схоже, що Emacs в принципі може працювати з перетягуванням дзвінків із системи.
Ім'я

@PythonNut Так, Emacs підтримує DnD. Дивіться тут і тут .
Василь

@ Ім'я: Я вважаю, що використовувати кермо або плющ, щоб вибрати вкладення набагато простіше, ніж перетягувати їх і скидати, але це питання особистої переваги.
Омар

Відповіді:


39

Я використовую Mu4e . Це добре задокументовано (також через Інфо), і станом на цей час, активно розвивається .

Mu4e постачається як доповнення до mu , "набір інструментів для роботи з Maildirs та файлами повідомлень, зокрема для індексації та пошуку електронних повідомлень" . Він працює разом з offlineimap або fetchmail . Я також використовую пакет Emacs smtpmail-multi, щоб я міг надсилати з різних облікових записів різні налаштування. Для плавної інтеграції з постачальником послуг електронної пошти вам слід apt-get install ca-certificates. І якщо ви хочете, щоб керувати пакетом версію, ви можете схопити му 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 для фактичного отримання пошти. У моїй конфігурації, показаній нижче, я все налаштовував на роботу з двома обліковими записами. Якщо вам просто потрібно завантажити з одного облікового запису, ви можете звернутися до зразка .offlineimaprc, включеного в посібник з mu4e.

Що стосується розширень та інтеграції з іншими пакетами Emacs: Mu4e зручно інтегрується в режим Org (для захоплення посилань на повідомлення або користувацькі пошукові запити, і навіть для створення електронних листів у форматі HTML за допомогою синтаксису Org, хоча я не використовую цю функцію) через доданий org -mu4e.el . Існує окрема інтеграція helm-mu, яка є корисною, але потребує ще однієї роботи IMO. Він тематичний у solarized.el . Є також розширення mu4e-maildirs, яке дає зручну кількість прочитаних та непрочитаних повідомлень у поштовому каталозі, і є деякі інші речі, які я не пробував.

Разом з документами ці зразки конфігурацій можуть допомогти новому користувачеві 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 для Windows ; сама "написана на C та трохи C ++ (для інтерфейсу з Xapian)", яка має "два варіанти для підтримки вбудованої Microsoft Windows". Якщо вам зручно збирати шматочки та фрагменти коду, ви можете, цілком ймовірно, змусити його працювати. Я сам не є користувачем Windows, тому не можу сказати більше, можливо, хтось ще прокоментує це далі.
Джо Корнелі

2
Чи є якийсь веб-сайт, який пояснює, чому користувач gnus хотів би переключитися або перейшов на mu4e і чому? Мені цікаво, на сьогодні це здається популярним.
politza

2
@Malabarba, я додав "мінімальну конфігурацію" з документів mu4e і пов'язував їх простий приклад .offlineimaprc.
Джо Корнелі

2
Важливою особливістю або вимикачем угод, залежно від того, як користувач може бачити це, є те, що mu сервер працює весь час після запуску, mu4eі це різко впливає на ефективність Emacs під час мого тестування та запобігає використанню інших утиліт, таких як відкриття іншого буфера, який потрібно використовувати aspell. Спілкування з mu сервером - це невід'ємна функція, і це не те, що можна відключити. На мою думку, це недолік дизайну, який слід було б виправити за допомогою окремих викликів, muне запускаючи сервер 24/7. Для підтвердження введіть 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будь-яку поштову папку, щоб побачити ВСІ елементи в цій папці, або ж видно лише непрочитані листи
  • популярні протоколи та методи аутентифікації підтримуються нестандартно
  • для зберігання паролів я просто використав easygpg, який постачається в комплекті з Emacs. easygpg - це загальна основа. Отже пароль шифрується та зберігається в автономному режимі.
  • Локальний кеш електронної пошти офлайн підтримується в Gnus століттях назад
  • додавати / видаляти / завантажувати вкладення легко. Я не знаю речі перетягування, оскільки я використовую лише клавіатуру. Вам потрібно налаштувати "mailcap-mime-data", щоб відкрити вкладення з сторонніми програмами.
  • Пошук пошти локально / віддалено підтримується з вікна
  • фільтр / архів підтримується. Але я пропоную popfile, який є незалежним програмним забезпеченням для фільтра пошти. Я використовую popfile, тому що він набагато краще, ніж будь-який інший поштовий фільтр (наприклад, власний фільтр Gmail).
  • Управління контактами обробляється bbdb (інший плагін Emacs), також легко імпортувати контакти з Gmail за допомогою gmail2bbdb.el (написано мною).
  • Для читання у форматі rss краще використовувати elfeed (Gnus може це зробити за допомогою сервісу Gwene, але elfeed простий у налаштуванні та має більше функцій поза коробкою). Gwene є потужним, але вимагає набагато більше знань (мій посібник із Gnus, API Emacs-w3m, hydra, програмування Lisp, інструменти кліпу Linux, оболонка)
  • Gnus підтримує всі платформи. Але у Windows вам потрібно додати бінарне з OpenSSH та GnuTLS до змінної середовища PATH. Ці два пакети можна було б встановити через Cygwin. Emacs може бути рідною версією Windows. Починаючи з Emacs 26, всі залежності упаковані в один пакет.

Перегляньте мій посібник для отримання порад.

IMO, вам краще не замінити веб-інтерфейс Gmail (або будь-який інший веб-інтерфейс поштової служби) на Gnus повністю. Найкраща практика освоєння Gnus - це поводження з Gnus як вдосконаленням Gmail. Таким чином, ви не будете розчаровані, якщо Gnus може зробити певну справу, тому що ви завжди можете відмовитися від веб-інтерфейсу.

Знімок екрана:

введіть тут опис зображення


4
Дякуємо за те, що ви додали gnus до списку, схоже, це один із канонічних способів використання електронної пошти з emacs. Але на даний момент ця відповідь є лише ледь більше, ніж лише відповідь на посилання. Було б корисніше отримати інформацію з цього посилання (або деінде!), Щоб відповісти на питання точніше: крім запобігання гниттю посилання, це також допоможе у порівнянні з іншими поштовими пакетами.
Т. Веррон

Також скріншот був би чудовим, щоб нові відвідувачі могли легко відчути вигляд і настрій.
Джо Корнелі

11

Не багато

Я використовую багато для своїх листів в emacs.

скріншот подання "не привіт"

Він працює лише на локальній пошті, яку потрібно зберігати по одному повідомленню на файл, і я використовую папки maildir, до яких доставляє мій smtp-сервер. Він повинен мати можливість справлятися з іншими рішеннями, що синхронізують пошту з папками maildir на вашому комп’ютері.

Щоб почати його використовувати, ви встановлюєте базу командного рядка та інтерфейс emacs і починаєте конфігурувати за допомогою майстра короткого тексту за допомогою виклику notmuch, налаштовуйте звичайний виклик на сценарій фільтрації, який викликає notmuch newта тегує інші листи з тегів, які ви позначили (наприклад, список розсилки теми, які ви хочете проігнорувати) або тег-листи, відсортовані за вашим демоном пошти, у спеціальні майлдіри. У emacs ви телефонуєте, M-x notmuchщоб побачити інтерфейс раніше. Майже всю конфігурацію інтерфейсу можна виконати через інтерфейс Настроювання від emacs.

Оскільки він не завантажує повідомлення з інших систем, він не має вбудованої аутентифікації або протоколів, крім використання вбудованої підтримки emacs для надсилання електронної пошти.

Він не використовує папки як такі, але на практиці зберігаються пошуки відчувають їх як для читання електронної пошти. Він перераховує всі використані теги на перегляді notmuch-hello, так що коли ви вирішите, як позначити свою пошту, ваші списки автоматично оновлюються. Він не потребує архівації, оскільки він не повинен сповільнюватись, коли у вас багато електронних листів.

Еліпса частина не відрізняється від швидкого повнотекстового та тегованого та масштабованого пошуку, щоб перелічити збіги та відповідати на повідомлення. Я не знаю, як функція перетягування працюватиме з тим, що я використовую її через термінали та віддалені оболонки на своєму сервері.

Перегляд повідомлень у потоці повідомлень

альтернативний перегляд дерева результатів пошуку

більше знімків екрана: https://notmuchmail.org/screenshots/

Найскладнішою частиною цього може бути те, щоб синхронізувати теги, коли ви не використовуєте багато на двох різних комп’ютерах, але люди працювали навколо цього, і з того, що я зібрав зі списку розсилки, це, ймовірно, працює і зараз. Або подивіться на https://notmuchmail.org/remoteusage/ для нової установки, про яку я просто натрапив.

Є пакети для більшості дистрибутивів Linux, і він розробляється в базарному середовищі за допомогою списку розсилки. Якщо ви самостійно компілюєте з tarballs або git, він використовує код C і має залежність від Xapian для зберігання витягів із повідомлень, GMime для декодування MIME-електронних листів, Talloc для управління пам’яттю та zlib (що також є залежністю від Xapian) .

Ймовірно, це буде добре функціонувати з rss2email або будь-яким рішенням, що перетворює RSS-канали в maildir.

Його можна використовувати в командному рядку, і крім інтерфейсу emacs elisp за замовчуванням інші користувачі використовують його з mutt (копії / жорсткі посилання результатів пошуку у папку maildir на диску) або vim.

Ймовірно, буде потрібно деяке обслуговування, щоб продовжувати працювати, якщо обсяг вашої пошти перевищує мій (~ 90k повідомлень, не так багато пошти).


1
Emacs Notmuch приємний у використанні, дуже потужний, дуже швидкий і досить простий у навчанні та налаштуваннях (набагато простіше, ніж Gnus). Я дуже задоволений цим. Я не тестував Mu4e, хоч і Wanderlust. У всякому разі, ось кілька приємних статей: lwn.net/Articles/705856 wwwtech.de/articles/2016/jul/my-personal-mail-setup
Хорхе

6

Я був щасливим користувачем mew протягом багатьох років.

Я вже давно не використовую emacs для читання та написання пошти, тому ця інформація може бути застарілою. Сподіваємось, новіші мев-користувачі можуть заповнити його. Поки що, розглянемо цю відповідь заглушкою. (Я зроблю це вікі спільноти, щоб інші могли вільніше редагувати його.)

По-перше, за моїм досвідом, мев був швидким . У мене не було труднощів з обробкою списків розсилки з величезним трафіком за допомогою mew.

Налаштування mew було дещо задіяно, тим більше, що він використовує (використовується?) stunnelДля створення зашифрованих підключень до SMTP та IMAP-серверів. Але в основному це просто включає редагування файлу ~/.mew.elта створення каталогу для mew для збереження його даних. Окрім stunnel(та, звичайно, emacs), він не має залежностей.

Документація здається адекватною, хоча я часто опинявся в неправильному розділі. Хоча технічне обслуговування, мабуть, сповільнилось, але все-таки почалося. Час від часу виправляються помилки, але немає нових функцій, які я помітив за деякий час.


Я б детальніше розповів, але, як я вже сказав, я не використовував emacs для пошти давно. В першу чергу через розплив електронної пошти, форматованої лише для HTML, яка стала головним болем у задній частині з часом. Тому в наші дні я використовую лише клієнти на основі GUI.
Харальд Ханш-Олсен

Дякуємо за те, що ви перерахували його, сподіваємось, якийсь інший користувач із мене може зайти та заповнити заготовки. Щодо електронних листів у форматі html, можливо, ситуація взагалі змінилася зараз, коли Emacs постачається з html-рендером?
Т. Веррон

@ T.Verron Можливо. Я майже впевнений, що mew не підтримує вбудований html-рендер поза коробкою. Однак велике питання - як поводитися з вбудованими зображеннями? Якщо вони посилаються на зовнішні зображення, немає проблем, але як бути із зображеннями, включеними до повідомлення? До речі, його можна налаштувати на показ HTML-кодованої пошти за допомогою w3m, але я ніколи не обходився тестувати це.
Харальд Ханш-Олсен

5

WANDERLUST : https://github.com/wanderlust/wanderlust

ОСОБЛИВОСТІ:

  • Впровадження лише в Elisp.
  • Підтримка IMAP4rev1, NNTP, POP (POP3 / APOP), MH та Maildir.
  • Комплексний доступ до повідомлень на основі специфікацій папок, таких як Mew.
  • Основні прив'язки та обробка марк, як Mew.
  • Управління потоками та непрочитаними повідомленнями.
  • Режим папок для вибору та редагування передплачених папок.
  • Кеш повідомлень, відключена операція.
  • MH-подібний Fcc (Fcc:% резервного копіювання можливо).
  • Повна підтримка MIME (від SEMI).
  • Проект редагування пошти та новин як один інтерфейс.
  • Інтерфейс на основі значка для списку папок (XEmacs та> = Emacs 21).
  • Пропустити отримання великої частини повідомлення MIME (IMAP4).
  • Пошук на стороні сервера (IMAP4), доступний інтернаціоналізований пошук.
  • Віртуальна папка, включаючи користувальницький пошук, але не обмежуючись ними, за допомогою Wanderlust або зовнішніх утиліт, таких як muта grep.
  • Стиснута папка.
  • Автоматичний термін дії старих повідомлень.
  • Автоматична заправка.
  • Шаблони проектів.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.