Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
192 views
in Technique[技术] by (71.8m points)

Reading email (from gmail) in emacs 24

What's the current authoritative way to check and send email in emacs 24?

I've checked the following SO links:

  1. Setup for Gmail in Emacs VM
  2. https://superuser.com/questions/476714/how-to-configure-emacs-smtp-for-using-a-secure-server-gmail
  3. Which Emacs mail package should I use?

And understand the packages smtpmail, rmail, are involved, as well as an .authinfo file.

I have created an .authinfo file of the form:

machine mail.example.org port 25 login myuser password mypassword

And have added the following to my init.el file:

(setq smtpmail-stream-type 'ssl)
(setq smtpmail-smtp-server "smtp.gmail.com")
(setq smtpmail-smtp-service 465)

(As the second link, the Superuser one, said.)

But when I run M-x rmail, it still connects to my computer's local email address, rather than my gmail. What do I need to set up to login and read/write email? (If you could include keystrokes, that would also be super helpful.)

I'm running ubuntu 12.04 if that makes any difference.

question from:https://stackoverflow.com/questions/20979918/reading-email-from-gmail-in-emacs-24

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

After trying many ways, I now use offlineimap to sync messages between my machine and the google server. Gnus then reads messages from the local machine. Postfix is used to send messages to the gmail smtp server. Virtues of this setup: reading/sending email does not involve waiting for servers while in gnus (fast), can read/send email while offline (passed to server when online again). If you preferred to use RMail, you could instead of gnus.

This is what I do on ubuntu 13.10.

offlineimap, run periodically puts mail into ~/Maildr/Gmail

contents of ~/.offlineimaprc:

[general]
# List of accounts to be synced, separated by a comma.
accounts = Gmail
maxsyncaccounts = 2

[Account Gmail]
# Identifier for the local repository; e.g. the maildir to be synced via IMAP.
localrepository = Gmail-local
# Identifier for the remote repository; i.e. the actual IMAP, usually non-local.
remoterepository = Gmail-remote
# Status cache. Default is plain, which eventually becomes huge and slow.
status_backend = sqlite

[Repository Gmail-local]
type = Maildir
localfolders = ~/Maildir/Gmail

[Repository Gmail-remote]
type = Gmail
remoteuser = YourName@gmail.com
remotepass = YourPass
folderfilter = lambda foldername: foldername in ['INBOX', 'Dev']
# Necessary as of OfflineIMAP 6.5.4
sslcacertfile = /etc/ssl/certs/ca-certificates.crt

gnus reads mail from ~/Maildir/Gmail

In emacs, the variable gnus-home-directory is set to "~/Documents/gnus". Contents of "~/Documents/gnus/.gnus":

(setq gnus-select-method
      '(nntp "localhost")) ; I also read news in gnus; it is copied to my local machine via **leafnode**

(setq gnus-secondary-select-methods
      '((nnmaildir "GMail" (directory "~/Maildir/Gmail")) ; grab mail from here
    (nnfolder "archive"
      (nnfolder-directory   "~/Documents/gnus/Mail/archive") ; where I archive sent email
      (nnfolder-active-file "~/Documents/gnus/Mail/archive/active")
      (nnfolder-get-new-mail nil)
      (nnfolder-inhibit-expiry t))))

Sending mail: emacs configuration variables: mail-user-agent is set to 'gnus-user-agent send-mail-function is set to 'sendmail-send-it user-mail-address is set to "YourName@gmail.com"

Trickiest thing is setting up Postfix, that is clearly described here:

Further comments to address questions:

The program offlineimap is controlled by the file ~/.offlineimaprc. When offineimap runs, it will keep information in the directory ~/.offlineimap. You can read the docs for explanation of how that all works.

Re: sending mail: In fact, I used to do send mail directly from emacs. This involved fiddling with a number of things. It turned out to be much easier to just let postfix handle it. For example, I use several different email accounts to send mail from in Gnus; I now let gnus know about this via posting-styles, and let postfix worry about which address should go to which server, and how.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...