Maildir - открыть последнее письмо и ответить отправителю

Я настроил постфикс на сервере электронной почты с файлом .forward, который сохраняет копию электронной почты и вызывает скрипт Python. Эти электронные письма хранятся в формате Maildir.

Я хочу использовать этот скрипт Python для отправки ответа отправителю, подтверждая, что электронное письмо было получено. Мне было интересно, есть ли способ открыть / получить доступ к этому электронному письму, получить информацию о заголовке и адрес отправителя и отправить электронное письмо обратно.

Я просмотрел несколько примеров функций Maildir для Python, но в основном они добавляют/удаляют электронные письма. Как я могу открыть последнее полученное электронное письмо в Maildir/new и получить необходимую информацию?

Заранее спасибо. Извиняюсь за глупый вопрос, но я новичок в Python.

РЕДАКТИРОВАТЬ:

md =  mailbox.Maildir('/home/abcd/Maildir')
message = md.iterkeys().next()
#print message
#for msg in md:
#    subject = msg.get('Subject',"")
#    print subject
print message
sender = message.get('From',"")
print sender

Когда я выполняю это, я получаю имя отправителя ... но это скорее самое старое электронное письмо, поступившее в папку Maildir/new, а не последнее.

Кроме того, если я использую функцию get_date, что, если два (или более) электронных письма придут в один и тот же день?


person Papps    schedule 19.02.2015    source источник
comment
Когда вы пишете комментарий в моем ответе, я с большей вероятностью увижу ваш комментарий!   -  person Juergen    schedule 19.02.2015
comment
Виноват. Я думал, что написал под твоим постом. Любые предложения об этом методе? :)   -  person Papps    schedule 19.02.2015


Ответы (1)


Несколько советов для этого:

  • Вы можете открыть Maildir с помощью класса mailbox.Maildir (см. Документацию для почтового ящика)
  • Вы можете перебирать все письма в Maildir с помощью метода itervalues
  • Теперь вы получаете все письма в Maildir. Один из них самый последний.
  • Почты являются объектами класса MaildirMessage, который является подклассом Message. Для этих классов также существует документация (в настоящее время на той же странице, что и почтовый ящик)
  • С помощью метода «get_date» для этих объектов вы можете узнать, какой из них является самым последним. Вы все еще должны выбрать его самостоятельно.

Так же, как помочь новичкам: немного вы должны также сделать самостоятельно.

Вы должны ознакомиться с документацией Python — я согласен, что найти нужные пакеты и способы их использования непросто, но вы можете попробовать их прямо в оболочке Python.

Хорошо, вот еще один фрагмент кода:

newest = None
for message in md.itervalues():
   if newest == None or message.get_date() > newest.get_date():
      newest = message
# now newest should contain the newest message

Не видел ваш последний вопрос: get_date содержит не только дату, но и время, потому что он дает количество секунд с (обычно) 1970 года.

person Juergen    schedule 19.02.2015
comment
Спасибо! Это помогло в определенной степени. Хотя get_date у меня не работал, я использовал time.mktime() для реализации вашей логики, и это сработало. - person Papps; 21.02.2015