[Python] Communication avec un serveur (pop)

Communication avec un serveur (pop) [Python] - Python - Programmation

Marsh Posté le 08-08-2003 à 00:47:40    

Bonjour,
Je souhaite réaliser un script python qui check ma boite aux lettres. J'ai jamais programmé réseau/socket alors soyez indulgent  :o  
 
En fait, je sais pas trop par où commencer. Je connais les commandes pour dialoguer avec un serveur pop via telnet (USER, PASS, LIST, etc) mais je ne sais pas trop par où commencer (en fait, si je vais me servir de ces commandes ou pas...)
 
Je suppose qu'il faut déjà établir la connexion au serveur pop.
 

Code :
  1. import socket, sys
  2. HOST = '80.67.180.74'
  3. PORT = 110
  4. mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  5. try:
  6. mySocket.connect((HOST, PORT))
  7. except socket.error:
  8. print "Connection failed"
  9. sys.exit()
  10. print "Connection etablished"

 
 
(il s'agit du serveur pop.tuxfamily.org)
 
Bon je suis content, puisque :
 
$ python pop.py
Connection etablished
 
 :D  
 
Reste à savoir arriver à s'identifier et tout ça ? est ce qu(on peut lui envoyer "USER vanilla" dans la gueule ?
J'ai besoin d'un peu d'aide !


---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Marsh Posté le 08-08-2003 à 00:47:40   

Reply

Marsh Posté le 08-08-2003 à 01:07:26    

tu penses pas que ce problème a été programmé il y a des années... http://www.python.org/doc/current/ [...] oplib.html

Reply

Marsh Posté le 08-08-2003 à 01:11:18    

Je n'en savais rien. Merci quand même.


Message édité par vanilla le 08-08-2003 à 01:11:27

---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Marsh Posté le 09-08-2003 à 23:04:34    

J'obiens ça sur le serveur pop qd je me connecte à telnet et que je demande la liste des mails.
 
+OK POP3 clients that break here, they violate STD53.
 
 :??:


---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Marsh Posté le 09-08-2003 à 23:08:39    

>>> import poplib
>>> p=poplib.POP3("pop.free.fr" )
>>> p
<poplib.POP3 instance at 0x816b654>
>>> p.getwelcome()
'+OK <9213.1060463253@pop1-1.free.fr>'

je vois pas le problème

Reply

Marsh Posté le 09-08-2003 à 23:40:41    

Le problème c'est que le serveur pop.tuxfamily.org refuse la requête 'list', mais pas pop.free.fr
Mais bon, si ça vient du serveur, j'y peux rien.
 
Sinon j'ai fait comme toi et j'arrive pas à envoyer le USER.
 
>>> p.user(vanilla)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
NameError: name 'vanilla' is not defined
>>>
 
pourtant ya bien :
 
user(username)
    Send user command, response should indicate that a password is required.
 
:??:
 
J'ai essayé avec une autre méthode, cad d'utiliser send() mais je crois que c'est pas le bon truc. :/


Message édité par vanilla le 09-08-2003 à 23:41:40

---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Marsh Posté le 09-08-2003 à 23:44:07    

ben ça doit être une chaîne. chez moi tout marche tres bien

Reply

Marsh Posté le 09-08-2003 à 23:57:38    

Bizarre ça  [:mlc]


---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Marsh Posté le 10-08-2003 à 00:01:41    

tu le fait exprès ou quoi?
 
 

>>> import poplib
>>> p=poplib.POP3("pop.ifrance.com" )
>>> p.user("bpub" )
'+OK bpub, i need your password'
 
>>> p.pass_("xxxxxxx" )
'+OK bpub maildrop locked and ready'
>>> p.list()
('+OK 37 messages (110161 octets)', ['1 1857', '2 6267', '3 9629', '4 5283', '5 7366', '6 2170', '7 2365', '8 1184', '9 8178', '10 3293', '11 2599', '12 1995', '13 1174', '14 7517', '15 1839', '16 2394', '17 2248', '18 1198', '19 2539', '20 3552', '21 2084', '22 2526', '23 1187', '24 1182', '25 2431', '26 1197', '27 1801', '28 2725', '29 2638', '30 1189', '31 1192', '32 4225', '33 1208', '34 1972', '35 1212', '36 4829', '37 1916'], 324)
 
>>> p.retr(1)
('+OK here comes the message (1857 octets)', ['Received: from 200.78.59.121 [200.78.59.121] by th24.opsion.fr id 200308070443.16a3; Thu, 7 Aug 2003 04:43:24 GMT', 'Content-Transfer-Encoding: 7BIT', 'From: Correlia<Correliary@mail.com>', 'X-Priority: 3', 'Content-Type: text/html; charset=iso-8859-1', 'Subject: Hi there $Filed1', 'Message-Id: <avspq$d6qjk.Correliary@mail.com>', 'To: bpub@ifrance.com', 'X-Sender: Correlia<Correliary@mail.com>', 'X-MSMail-Priority: Normal', 'Received: from mail.com by nq682h8esd9c.mail.com with SMTP for bpub@ifrance.com; Wed, 06 Aug 2003 23:09:57 -0700', 'Importance: Normal', 'Date: Wed, 06 Aug 2003 23:09:57 -0700', '', '<html>', '<head>', '</head>', '<img src="http://216.219.227.69/cgi-bin/open/open.cgi?x=bpub@ifrance.com">', '<body bgcolor="#FFFFFF" text="#000000">', '<div align="center">', '  <table width="500" cellspacing="0" bgcolor="#000066">', '    <tr>', '      <td>', '        <table width="100%" border="0" cellspacing="0">', '          <tr>', '          <td bgcolor="#000066"> ', '              <div align="center"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><b><font size="5">Hello ', '                Benoit</font></b></font></div>', '            </td></:VBRPGDTJHXDOXDRFFUMNVTKMKEBTYCGAMISFYBVLHNUOSCFWVPTAHLHTUBMKWTAKTBCJJLLGILKJE>', '          </tr>', '          <tr>', '            <td bgcolor="#FFFFFF"><a href="http://pws.prserv.net/usinet.neway4u/debt/debt2.htm"><img src="http://4thebetter.gq.nu/ad1.gif" width="500" height="450" border="0"></a></td>', '          </tr>', '        </table>', '      </td>', '    </tr>', '  </table>', '  <a href="http://pws.prserv.net/usinet.neway4u/remove2.htm"><img src="http://pws.prserv.net/usinet.neway4u/1.gif"', '</a></div>', '</body>', '</html>', '', '_____________________________________________________________________', 'Envie de discuter en "live" avec vos amis ? T\xe9l\xe9charger MSN Messenger', 'http://www.ifrance.com/_reloc/m la 1\xe8re messagerie instantan\xe9e de France'], 1857)
 
>>> map(lambda x: p.dele(x), range(1, 36))
['+OK message 1 deleted', '+OK message 2 deleted', '+OK message 3 deleted', '+OK message 4 deleted', '+OK message 5 deleted', '+OK message 6 deleted', '+OK message 7 deleted', '+OK message 8 deleted', '+OK message 9 deleted', '+OK message 10 deleted', '+OK message 11 deleted', '+OK message 12 deleted', '+OK message 13 deleted', '+OK message 14 deleted', '+OK message 15 deleted', '+OK message 16 deleted', '+OK message 17 deleted', '+OK message 18 deleted', '+OK message 19 deleted', '+OK message 20 deleted', '+OK message 21 deleted', '+OK message 22 deleted', '+OK message 23 deleted', '+OK message 24 deleted', '+OK message 25 deleted', '+OK message 26 deleted', '+OK message 27 deleted', '+OK message 28 deleted', '+OK message 29 deleted', '+OK message 30 deleted', '+OK message 31 deleted', '+OK message 32 deleted', '+OK message 33 deleted', '+OK message 34 deleted', '+OK message 35 deleted']
 
>>> p.list()
('+OK 1 messages (1916 octets)', ['37 1916'], 9)
>>> p.dele(37)
'+OK message 37 deleted'
>>> p.list()
('+OK 0 messages (0 octets)', [], 0)
>>> p.stat()
(0, 0)
>>> p.quit()
'+OK Good bye bpub'
>>>

Reply

Marsh Posté le 10-08-2003 à 00:05:53    

:jap:  
 
J'ai vu qu'aaprès qu'avec les ' ' ça passait.
 
Désolé :/


Message édité par vanilla le 10-08-2003 à 00:06:04

---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Marsh Posté le 10-08-2003 à 00:05:53   

Reply

Marsh Posté le 10-08-2003 à 00:07:24    

ben la doc dit "string"
 
une_variable
"une chaine"
'une autre chaine'

Reply

Marsh Posté le 10-08-2003 à 00:20:08    

Exact, j'aurais appris des choses ce soir  :love:  
 
Si je comprends bien,
 


poplib.POP3(HOST)

 
 
revient à :
 


mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
try:
 mySocket.connect((HOST, PORT))
except socket.error:
 print "Connection to " + HOST + " failed"
 sys.exit()
print "Connection to " + HOST + " etablished"

 
 
 :??:


---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Marsh Posté le 10-08-2003 à 00:26:16    

ben peut être, mais ça doit etre coder en C

Reply

Marsh Posté le 10-08-2003 à 00:40:18    

ouais sans doute, mais en fait, les librairies servent juste à éconnomiser du tps aux programmeurs  :o


---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Marsh Posté le 10-08-2003 à 00:40:55    

et c'est déjà énorme !!!!!!!!!!!!!!!!!!!!!!

Reply

Marsh Posté le 10-08-2003 à 14:12:03    

C'est encore moi  :o  
 
J'aurais besoin de savoir s'il existait une commande équivalente à  "grep" en python. Puisque quand je retr un mail, j'aimerais afficher seulement le sujet, et non toutes les informations...
 


---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Marsh Posté le 10-08-2003 à 14:13:13    

ben t'as des regex avec le module re
essaye kodos comme soft pour t'aider à les ecrire

Reply

Marsh Posté le 10-08-2003 à 14:23:31    

Je suis entrain de voir ça  :jap:  
 
http://www.python.org/doc/current/lib/module-re.html


---------------
Membre du Front de Libération de Datoune | Soutenez le FLD | A Tribute To Datoune
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed