2010-11-06 7 views
0

J'ai des problèmes pour utiliser le module Email: MIME en perl. C'est probablement parce que je l'utilise mal, mais trouver des exemples pour l'utiliser est difficile. Je suis sûr que je suis censé utiliser un scalaire du message complet en entrée, mais cela ne fonctionne pas. Voici mon code et ma sortieProblème avec perl Email :: MIME

code:

#!/usr/bin/perl 

use Net::POP3; 
use Email::MIME; 
local $| = 1; 

my $pop = Net::POP3->new('pop.mail.server'); 

print "Logging in...."; 
if ($pop->login('username','password')) { 
print "logged in successfully\n"; 
my $msgs = $pop->list; 
my @keys = keys(%$msgs); 
my $msgr = $pop->get($keys[1]); #Selects a more or less random email for testing 
my $msg = join("",@$msgr); 

my $parsed = Email::MIME->new($msg); 
foreach my $key (keys %$parsed) {print $key.":".$parsed{$key}."\n";} 
} 

Sortie:

Logging in....logged in successfully 
body: 
mycrlf: 
body_raw: 
parts: 
ct: 
header: 
+0

Avez-vous imprimé 'msg' $, pour voir si cela contient ce qui ressemble à un message e-mail en-têtes? – mscha

Répondre

2

Toujours use strict; et use warnings;. Il pointera immédiatement une erreur:

Global symbol "%parsed" requires explicit package name at p line 21.

Ligne 21 doit être:

foreach my $key (keys %$parsed) {print $key.":".$parsed->{$key}."\n";} 
+0

Wow, erreur stupide. Merci! –

0

Je pense que cela devrait être $parsed->{ $key } dans votre déclaration d'impression