Problème de connection pop en perl [Résolu/Fermé]

Signaler
Messages postés
53
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
24 février 2018
-
Messages postés
53
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
24 février 2018
-
Bonjour,
Alors depuis quelque temps j'essaie d'administré une boit mail en utilisant le protocole pop3 sur le serveur hotmail et tout cela en perl.
Bon après plusieurs essai ou je n'arriver pas à me connecter, j'ai decidé de rechercher un bout de code sur le net je suis tombait la dessus:

use warnings;
   use strict;
   use Net::POP3;
   my $subject_width = 50;
   my $from_width    = 80;
   my $mailserver = 'pop3.live.com';
   my $username   = '...............@hotmail.fr';
   my $password   = '................';
   my $pop3    = Net::POP3->new($mailserver)       or die "Failed to connect to $mailserver";
   my $tot_msg = $pop3->login($username,$password) or die "Failed to authenticate $username";
   print "Connected\n";
   printf("\n   There are $tot_msg messages\n\n");
   foreach my $msg_id (1 .. $tot_msg) {
     my $header = $pop3 -> top($msg_id, 0);
     my ($subject, $from, $status) = analyze_header($header);
     my $delete = "";
     if ($subject eq 'Document') {
       $delete = 'del';
       $pop3->delete($msg_id); # not really deleted until quit is called
     }
     printf "[%3d]  %-${subject_width}s  %-${from_width}s %6s %3s\n",
        $msg_id,
        substr($subject,0,$subject_width),
        substr($from   ,0,$from_width   ),
        $status,
        $delete;
   }
   print "Quit and Delete?\n";
   my $quit = <STDIN>; chomp $quit;
   if (lc $quit eq 'y' or lc $quit eq 'yes') {
     print "quitting and deleting\n";
     $pop3 -> quit;  # deleted messages are deleted now
   }
   $pop3 -> quit;  # deleted messages are deleted now
  
  sub analyze_header {
    my $header_array_ref = shift;
    my $header = join "", @$header_array_ref;
    my ($subject) = $header =~ /Subject: (.*)/m;
    my ($from   ) = $header =~ /From: (.*)/m;
    my ($status ) = $header =~ /Status: (.*)/m;
    if (defined $status) {
      $status = "Unread" if $status eq 'O';
      $status = "Read"   if $status eq 'R';
      $status = "Read"   if $status eq 'RO';
      $status = "Ne    $status = "-";w"    if $status eq 'NEW';
      $status = "New"    if $status eq 'U';
    }
    else {
      $status = "-";
    }
    return ($subject, $from, $status);
  }


Pourtant je n'arrive toujours pas à me connecter???
Hors je me connect parfaitement avec des client comme thunderbird ou outlook sur un compte hotmail en utilisant le protocol pop3 et sans utiliser la securité ssl

Si quelqu'un à une idée je suis preneur.

1 réponse

Messages postés
53
Date d'inscription
dimanche 16 mars 2008
Statut
Membre
Dernière intervention
24 février 2018

C'est bon j'ai trouvé.
Pour ce que cela intéresse il faut tout simplement activer le transfert en mode ssl
voila un code source beaucoup plus simple et qui fonctionne.
  #!/usr/local/bin/perl

  use Mail::POP3Client;
  $pop = new Mail::POP3Client( USER     => '........@hotmail.fr',
                               PASSWORD => '............',
                               HOST     => 'pop3.live.com',
                               USESSL   => true,
                             );

  for ($i = 1; $i <= $pop->Count(); $i++) {
    foreach ( $pop->Head( $i ) ) {
      /^(From|Subject):\s+/i and print $_, "\n";
    }
    print "\n";
  }