Como ler o último email do usuário usando um script de shell?

0

Digamos que eu tenha duas máquinas A e B

Em A, instalei e configurei um servidor SMTP e IMAP

Por exemplo, eu tenho usuário: george com senha: 123456 na máquina A

Eu estou tentando escrever um script de shell que será executado a partir da Máquina B e irá ler o último usuário de e-mail george recebido e exibido no STDOUT.

Tanto quanto eu sei, a fim de ser lido pelo servidor IMAP, as mensagens devem ser entregues no formato Maildir.

    
por Adrian George 13.01.2015 / 21:25

2 respostas

2

Bem-vindo ao maravilhoso inferno do IMAP ;-)
Você pode usar o python para fazer isso:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from email.parser import HeaderParser

import imaplib, email, re

list_response_pattern = re.compile(r'\((?P<flags>.*?)\) "(?P<delimiter>.*)" (?P<name>.*)')

def parse_list_response(line):
    flags, delimiter, mailbox_name = list_response_pattern.match(line).groups()
    return (flags, delimiter, mailbox_name)

# Add your data here
HOST = 'server.de'
USERNAME = 'user'
PASSWORD = 'password'

server = imaplib.IMAP4(HOST) # connect
server.login(USERNAME, PASSWORD) # login
server.select('INBOX',readonly=True) # select mailbox aka folder

result, data = server.search(None, "ALL") # search emails

ids = data[0] # data is a list.
id_list = ids.split() # ids is a space separated string
latest_email_id = id_list[-1] # get the latest
result, data = server.fetch(latest_email_id, "(RFC822)") # fetch email

for response_part in data:
    if isinstance(response_part, tuple):
        msg = email.message_from_string(response_part[1])
        varSubject = msg['subject']
        varFrom = msg['from']
        varDate = msg['Date']

        print varDate + " " + varFrom.split()[-1] + " " + varSubject

server.close()
server.logout()
    
por Jan 13.01.2015 / 23:19
0

Por que não experimentar clientes de email baseados em shell, por exemplo, mh e mutt - Estou confiante de que há mais deles se nada disso atender às suas necessidades.

    
por Hannu 13.01.2015 / 23:35

Tags