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

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

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

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

Example
...
Рейтинг: 0 / 0
[Python] как опросить почтовый ящик с качать из него письмо?
    #38160137
PythonNovice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О большое спасибо! пошел изучать))))
...
Рейтинг: 0 / 0
[Python] как опросить почтовый ящик с качать из него письмо?
    #38161503
NovicePython
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
[Python] как опросить почтовый ящик с качать из него письмо?
    #38163778
NovicePython
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так, ну подскажет кто?
...
Рейтинг: 0 / 0
[Python] как опросить почтовый ящик с качать из него письмо?
    #38163800
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [Python] как опросить почтовый ящик с качать из него письмо?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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