2015-02-19 266 views
0

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

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

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

Заранее спасибо. Извинения за тупой вопрос, но я новичок в Python.

EDIT:

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/новую папку не позднее одного.

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

+0

Когда вы напишете комментарий в своем ответе, я с большей вероятностью увижу ваш комментарий! – Juergen

+0

Мой плохой. Я думал, что написал под твоим сообщением. Любые предложения об этом методе? :) – Papps

ответ

0

Некоторые намеки на это:

  • Вы можете открыть 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

+0

Спасибо! Это помогло в определенной степени. Хотя get_date не работал для меня, я использовал time.mktime() для реализации вашей логики, и это сработало. – Papps

Смежные вопросы