Lendo e escrevendo e-mail com o emacs


78

Como podemos usar o emacs para ler e escrever e-mails?

Esta pergunta visa fornecer um ponto de aterrissagem canônico para usuários que desejam lidar com emails usando o emacs.

Poste apenas um pacote / solução por resposta, com o máximo de detalhes possível. As informações que podem ser úteis incluem:

  • requisitos, ambiente suportado
  • métodos suportados (leitura e / ou envio)
  • protocolos suportados (pop, imap, smtp, configuração de correio local ...)
  • autenticações suportadas
  • armazenamento de senha (nenhum, texto sem formatação, acesso a uma carteira externa ...)
  • suporte offline (nenhum, cache agressivo, sob demanda ...)
  • quão fácil é usar anexos? (adicionando com arrastar e soltar, baixar, abrir com emacs ou outro aplicativo ...)
  • instruções de configuração (quanto mais detalhado, melhor), capturas de tela ...
  • suporte para recursos adicionais de email (arquivamento, filtragem, pastas)
  • suporte para recursos adicionais relacionados (contatos, feeds RSS) ... não precisa ser muito detalhado aqui, dependendo da proximidade com o recurso do email

Soluções que exigem uma ferramenta externa para processar o correio são bem-vindas, desde que o usuário não precise interagir diretamente com o processo externo.

Exemplos: um pacote que atua como um front-end para mutt está no tópico, uma solução que permite que um usuário do Thunderbird escreva sua mensagem usando o emacs não.

Meta post para discussão.

Links rápidos para respostas (em ordem alfabética):


2
Existe uma maneira de ler e-mails com o emacs suportando arrastar e soltar para adicionar anexos? Esse é o recurso que realmente simplifica a vida de um cliente de email.
Nome

1
@Name O Emacs suporta até arrastar e soltar?
PythonNut

Bem, se eu arrastar e soltar um arquivo em um buffer, o Emacs abrirá esse arquivo. Portanto, parece que, em princípio, o Emacs pode lidar com chamadas de arrastar e soltar do sistema.
Nome

@PythonNut Sim, o Emacs suporta DnD. Veja aqui e aqui .
Basil

@Nome: Acho que usar elmo ou hera para escolher anexos muito mais fácil do que arrastá-los e soltá-los, mas isso é uma questão de preferência pessoal.
Omar

Respostas:


40

Eu uso o Mu4e . Está bem documentado (também via Info) e, até o momento, foi desenvolvido ativamente .

O Mu4e é enviado como um complemento para o mu , "um conjunto de ferramentas para lidar com caixas de correio e arquivos de mensagens, em particular para indexar e pesquisar mensagens de email" . Ele funciona em conjunto com offlineimap ou fetchmail . Também uso o pacote Emacs smtpmail-multi para que eu possa enviar de contas diferentes com configurações diferentes. Para uma integração suave com seu provedor de e-mail, você deve apt-get install ca-certificates. E se você quiser uma versão gerenciada por pacote, poderá usar o próprio MU apt-get install maildir-utils.

São fornecidos vários exemplos de configurações , incluindo a seguinte "configuração mínima":

(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")

Para descobrir a configuração do seu provedor de e-mail, você precisará fazer um pouco mais; e, em particular, você precisará configurar o OfflineIMAP ou o Fetchmail para recuperar o e-mail. Na minha configuração, mostrada abaixo, eu configurei tudo para funcionar com duas contas. Se você precisar apenas recuperar uma conta, consulte o exemplo .offlineimaprc incluído no manual do mu4e.

Quanto a extensões e integração com outros pacotes Emacs: o Mu4e se integra convenientemente ao Modo Org (para capturar links para mensagens ou pesquisas personalizadas e até para criar e-mails formatados em HTML usando a sintaxe Org, embora eu não use esse recurso) através da organização incluída -mu4e.el . Há uma integração helm-mu separada que é utilizável, mas precisa de mais trabalho IMO. É temático em solarized.el . Há também uma extensão mu4e-maildirs-extensão que fornece uma contagem conveniente de mensagens lidas e não lidas por diretório de correio, e há outras coisas que eu não tentei.

Juntamente com os documentos, essas configurações de amostra podem ajudar um novo usuário do mu4e a decolar.

.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

Configuração para mu4ee 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)

captura de tela: navegando com a lista de termos de pesquisa: emacs-orgmode.gnu.org

navegando na lista de organizações


1
Ele suporta o Windows emacs?
21415 Leh_Grady

1
@ user3173715, o OfflineIMAP não suporta oficialmente o Windows ", mas alguns o fizeram funcionar"; O Fetchmail é outra opção e faz parte dessa porta do Unixmail para Windows ; O próprio mu é "escrito em C e um pouco de C ++ (para interface com o Xapian)", que possui "duas opções para suporte nativo ao Microsoft Windows". Se você se sente à vontade para reunir bits e trechos de código como esse, é possível que funcione. Eu não sou usuário do Windows, por isso não posso lhe contar mais, talvez alguém queira comentar mais sobre isso.
Joe Corneli

2
Existe algum site explicando por que um usuário do gnus gostaria de mudar ou mudou para o mu4e e por quê? Estou curioso, parece popular no momento.
politza 7/06/2015

2
@ Malabarba, adicionei a "configuração mínima" dos documentos do mu4e e vinculei ao seu exemplo simples de um .offlineimaprc.
9788 Joe Corneli

2
Um recurso importante ou disjuntor, dependendo de como o usuário pode vê-lo, é que o mu servidor é executado o tempo todo após o lançamento mu4ee isso afeta drasticamente o desempenho do Emacs em meus testes e impede o uso de outros utilitários, como abrir outro buffer que precise ser usado. aspell. A comunicação com o mu servidor é um recurso incorporado e não pode ser desativado. Na minha opinião, é uma falha de design que deveria ter sido corrigida com chamadas individuais musem executar um servidor 24 horas por dia, 7 dias por semana. Para verificar, digite M-x list-processesapós a execuçãoM-x mu4e
lawlist

24

Se você usa o Gnus (já incluído no Emacs), consulte https://github.com/redguardtoo/mastering-emacs-in-one-year-guide/blob/master/gnus-guide-en.org

Aqui está o resumo do guia:

  • Usar a configuração mínima do EmacsWiki é suficiente ( http://www.emacswiki.org/emacs/GnusGmail ). Está configurado para qualquer serviço de correio, não apenas para o Gmail
  • Você pode ler / escrever correio html
  • Você precisa assinar pastas de correio manualmente
  • Pressione C-u Enterqualquer pasta de e-mail para ver TODOS os itens dessa pasta; caso contrário, apenas os e-mails não lidos estarão visíveis
  • protocolos e métodos de autenticação populares são suportados imediatamente
  • para armazenamento de senhas, usei o easygpg, fornecido com o Emacs. O easygpg é uma estrutura geral. Portanto, a senha é criptografada e armazenada offline.
  • o cache local offline de e-mail é suportado no Gnus há tempos
  • adicionar / remover / baixar anexos é fácil. Não conheço o recurso de arrastar e soltar porque só uso teclado. Você precisa configurar 'mailcap-mime-data` para abrir o anexo com aplicativos de terceiros.
  • pesquisa de e-mail local / remotamente é suportada imediatamente
  • filtro / arquivo é suportado. Mas sugiro popfile, que é um software de filtro de email independente. Uso popfile porque é muito melhor do que qualquer outro filtro de email (o próprio filtro do Gmail, por exemplo).
  • O gerenciamento de contatos é tratado pelo bbdb (outro plug-in do Emacs). Também é fácil importar contatos do Gmail usando o gmail2bbdb.el (escrito por mim).
  • Para leitura de rss, é melhor usar o elfeed (o Gnus pode fazer isso usando o serviço Gwene, mas o elfeed é fácil de configurar e tem mais recursos prontos). Gwene é poderoso, mas requer muito mais conhecimento (meu guia Gnus, APIs do emacs-w3m, hydra, programação Lisp, ferramentas Linux CLI, shell)
  • O Gnus suporta todas as plataformas. Mas no Windows, você precisa adicionar o binário do OpenSSH e GnuTLS à variável de ambiente PATH. Esses dois pacotes podem ser instalados através do Cygwin. O Emacs pode ser a versão nativa do Windows. Desde o Emacs 26, todas as dependências são empacotadas em um único pacote.

Confira meu guia para mais dicas.

Na IMO, é melhor não substituir a interface da web do Gmail (ou a interface de qualquer outro serviço de email) pelo Gnus. A melhor prática para dominar o Gnus é tratar o Gnus como um aprimoramento do Gmail. Portanto, você não ficará frustrado se o Gnus puder fazer alguma coisa, porque você sempre pode usar a interface da web da web.

Captura de tela:

insira a descrição da imagem aqui


4
Obrigado por adicionar o gnus à lista, parece ser uma das maneiras canônicas de usar o email com o emacs. Mas, no momento, essa resposta é apenas pouco mais do que uma resposta apenas de link. Seria mais útil extrair informações desse link (ou de outro lugar!) Para responder à pergunta com mais precisão: além de impedir a rotação do link, também ajudaria na comparação com outros pacotes de correio.
T. Verron

Além disso, uma captura de tela seria ótima para que os novos visitantes pudessem entender facilmente a aparência.
18138 Joe Corneli

11

Não muito

Não uso muito nos meus e-mails no emacs.

captura de tela da visualização notmuch-hello

Ele opera apenas em e-mails locais que precisavam ser armazenados uma mensagem por arquivo e eu uso as pastas maildir nas quais meu servidor smtp entrega. Ele deve ser capaz de lidar com outras soluções, sincronizando e-mails com as pastas do seu computador.

Para começar a usá-lo, instale a base da linha de comando e a interface do emacs e inicie a configuração por meio de um assistente de texto curto chamando notmuch, configure uma chamada regular para um script de filtragem que chame notmuch newe marque outras mensagens dos tópicos que você marcou (por exemplo, lista de discussão tópicos que você deseja ignorar) ou marque os e-mails classificados pelo seu daemon em e-mails especiais. No emacs, você liga M-x notmuchpara ver a interface de antes. Quase toda a configuração da interface pode ser feita através da interface de personalização do emacs.

Como ele não baixa mensagens de outros sistemas, ele não possui autenticação ou protocolos embutidos, além de usar o suporte embutido do emacs para enviar emails.

Ele não usa pastas como tal, mas, na prática, as pesquisas armazenadas se parecem com elas para a leitura de e-mails. Ele lista todas as tags usadas na exibição notmuch-hello, para que, quando você decidir como marcar suas mensagens, suas listas sejam atualizadas automaticamente. Ele não precisa ser arquivado, pois não deve abrandar quando você tem muitos e-mails.

A parte elisp de notmuch separa o rápido texto completo e as pesquisas com tags e escopo, para listar correspondências e responder a mensagens. Não sei como o recurso de arrastar e soltar funcionaria tanto quanto o uso por meio de terminais e shells remotos no meu servidor.

Visualização de mensagem em um encadeamento de mensagens

visualização em árvore alternativa dos resultados da pesquisa

mais capturas de tela: https://notmuchmail.org/screenshots/

A parte mais difícil seria ter tags sincronizadas quando você não usa muito em dois computadores diferentes, mas as pessoas trabalharam nisso e, pelo que eu colecionei na lista de discussão, provavelmente agora funciona. Ou dê uma olhada em https://notmuchmail.org/remoteusage/ para uma nova configuração que acabei de encontrar.

Existem pacotes para a maioria das distribuições linux e ele é desenvolvido em um ambiente de bazar através da lista de discussão. Se você se auto-compilar a partir de tarballs ou git, ele usa o código C e depende do Xapian para armazenar os trechos das mensagens, GMime para decodificar emails MIME, Talloc para gerenciamento de memória e zlib (que também é uma dependência do Xapian) .

Provavelmente funcionaria bem com o rss2email ou qualquer solução que converta feeds rss em maildirs.

É utilizável via linha de comando e, além da interface padrão do emacs elisp, outras pessoas o usam com mutt (resultados de pesquisa de cópias / hardlinks para uma pasta maildir no disco) ou vim.

Provavelmente, será necessária alguma manutenção para continuar em execução se o volume do seu correio exceder o meu (~ 90 mil mensagens, pouco correio).


1
O Emacs Notmuch é agradável de usar, muito poderoso, muito rápido e muito simples de aprender e configurar (muito mais simples que o Gnus). Eu estou muito satisfeito com isso. Eu não testei Mu4e, mew ou Wanderlust embora. De qualquer forma, aqui estão alguns bons artigos: lwn.net/Articles/705856 wwwtech.de/articles/2016/jul/my-personal-mail-setup
Jorge

6

Eu era um usuário feliz de mew por muitos anos.

Não uso o emacs para ler e escrever e-mails há muito tempo, portanto essas informações podem estar desatualizadas. Felizmente, os usuários mew mais recentes podem preenchê-lo. Por enquanto, considere esta resposta um esboço. (Tornarei o wiki da comunidade, para que outros possam editá-lo mais livremente.)

Em primeiro lugar, na minha experiência, o mew foi rápido . Não tive dificuldade em lidar com listas de discussão com enorme tráfego usando mew.

A configuração do mew foi um pouco complicada, especialmente porque ele usa (usado?) stunnelPara criar conexões criptografadas para servidores SMTP e IMAP. Mas, basicamente, envolve apenas editar um arquivo ~/.mew.ele configurar um diretório para o mew manter seus dados. Além do stunnel(e do emacs, é claro), ele não tem dependências.

A documentação parece adequada, embora muitas vezes me vi procurando na seção errada. A manutenção parece ter diminuído a velocidade, no entanto. Existem algumas correções de erros de vez em quando, mas não há novos recursos que notei há algum tempo.


Eu forneceria mais detalhes, mas como disse, não uso o emacs para correspondência há muito tempo. Principalmente por causa do dilúvio de emails formatados somente em HTML, que se tornaram uma grande dor no posterior a longo prazo. Hoje em dia, eu só uso clientes de email baseados em GUI.
Harald Hanche-Olsen

Obrigado por listar, espero que outro usuário mew possa entrar e preencher os espaços em branco. Sobre os emails formatados em html, talvez a situação tenha mudado geralmente agora que o emacs é enviado com um renderizador de html?
T. Verron

@ T.Verron Poderia ser. Tenho certeza de que o mew não suporta o renderizador html embutido imediatamente. Uma grande questão, no entanto, é como lidar com imagens embutidas? Se forem links para imagens externas, não há problema, mas e as imagens incluídas na mensagem? BTW, ele pode ser configurado para mostrar emails codificados em HTML usando o w3m, mas nunca testei isso.
Harald Hanche-Olsen

5

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

CARACTERÍSTICAS:

  • Implementação apenas no elisp.
  • Suporte para IMAP4rev1, NNTP, POP (POP3 / APOP), MH e Maildir.
  • Acesso integrado a mensagens com base em especificações de pasta como Mew.
  • Ligações de teclas e processamento de marcas como Mew.
  • Gerenciamento de threads e mensagens não lidas.
  • Modo de pasta para selecionar e editar pastas assinadas.
  • Cache de mensagens, Operação Desconectada.
  • FCC semelhante a MH (Fcc:% de backup é possível).
  • Suporte total do MIME (por SEMI).
  • Rascunho de edição de correio e notícias como uma mesma interface.
  • Interface baseada em ícones para a lista de pastas (XEmacs e> = Emacs 21).
  • Ignore a busca de uma parte grande da mensagem de MIME (IMAP4).
  • Pesquisa no lado do servidor (IMAP4), pesquisa internacionalizada está disponível.
  • Pasta virtual, incluindo, mas não limitadas, pesquisas personalizadas usando o Wanderlust ou utilitários externos, como mue grep.
  • Pasta compactada.
  • Expiração automática de mensagens antigas.
  • Reabastecimento automático.
  • Modelos de rascunho.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.