Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [Python] как опросить почтовый ящик с качать из него письмо? / 6 сообщений из 6, страница 1 из 1
21.02.2013, 08:53
    #38160115
PythonNovice
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] как опросить почтовый ящик с качать из него письмо?
Уважаемые, подскажите новичку момент:

Возможно ли с помощью скрипта питон - опросить почтовый ящик (например, Майл.ру) и скачать из ящика письмо в определенный каталог на компе?

Если это возможно, прошу подсказать примеры как это реализовать?

Спасибо!
...
Рейтинг: 0 / 0
21.02.2013, 09:00
    #38160123
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] как опросить почтовый ящик с качать из него письмо?
Юзай либы email, poplib

Example
...
Рейтинг: 0 / 0
21.02.2013, 09:19
    #38160137
PythonNovice
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] как опросить почтовый ящик с качать из него письмо?
О большое спасибо! пошел изучать))))
...
Рейтинг: 0 / 0
21.02.2013, 22:14
    #38161503
NovicePython
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] как опросить почтовый ящик с качать из него письмо?
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
import poplib, email

SERVER ="mail"
USERNAME = "user"
PASS = "pass"

p = poplib.POP3(SERVER)
print p.getwelcome()


print p.user(USERNAME)
print p.pass_(PASS)

response, lst, octets = p.list()
print response
for msgnum, msgsize in [i.split() for i in lst]:
 print "Сообщение %(msgnum)s имеет длину %(msgsize)s" % vars()
 print "UIDL =", p.uidl(int(msgnum)).split()[2]
 if int(msgsize) > 32000:
    (resp, lines, octets) = p.top(msgnum, 0)
 else:
    (resp, lines, octets) = p.retr(msgnum)
 msgtxt = "\n".join(lines)+"\n\n"
 msg = email.message_from_string(msgtxt)
 print "* От: %(from)s\n* Кому: %(to)s\n* Тема: %(subject)s\n" % msg
 
print p.quit()



ну вроде считывает.
только как перекодировать тему письма в нужную кодировку???

Сообщение 2 имеет длину 17691
UIDL = 143
* Тема: =?koi8-r?Q?=F3=D7=CF=C4=CB=C1=20=C
...
Рейтинг: 0 / 0
24.02.2013, 17:00
    #38163778
NovicePython
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] как опросить почтовый ящик с качать из него письмо?
так, ну подскажет кто?
...
Рейтинг: 0 / 0
24.02.2013, 17:39
    #38163800
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Python] как опросить почтовый ящик с качать из него письмо?
NovicePython,

не знаю как на питоне, а в принципе это читается как =?кодировка?система_кодирования?текст?=
на пхп делаю так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
  //str - полученый от сервера текст
  //encoding - кодировка самого письма (из заголовков), так как бывают случаи, когда тема не закодирована никак
  //и тогда просто надо перевести её из кодировки, в которой её получили, в кодировку в которой работаем
  //$this->_encoding - кодировка в которой работаем
  public function decodeLine($str, $encoding = "UTF-8"){
    preg_match_all("#=\\?([^\\?]+)\\?([^\\?]+)\\?([^\\?]+)\\?=#is", $str, $matches, PREG_SET_ORDER);
    if (empty($matches)){
      $res = $this->_encoding!=$encoding ? iconv($encoding, $this->_encoding, $str) : $str;
      return $res;
    }
    
    $res = '';
    foreach($matches as $match){
      $rs = $match[3];
      
      switch($match[2]){
        case 'Q': $rs = quoted_printable_decode($rs);
          break;
        case 'B': $rs = base64_decode($rs);
          break;
      }
      
      if($match[1]!=$this->_encoding) $rs = iconv($match[1], $this->_encoding, $rs);
      $res .= $rs;
    }
    
    return $res;
  }



Кстати, готов услышать пинания со стороны профи )) проэкт важный и хотелось бы, что бы всё было сделано правильно ) второй день приём писем отлаживаю и постоянно на какие-то нестандартные камни натыкаюсь (ощущение, как будто стандарты писаны не для smtp и imap серверов)
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [Python] как опросить почтовый ящик с качать из него письмо? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]