Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

imap .. problemi

13 views
Skip to first unread message

fino...@gmail.com

unread,
Nov 13, 2012, 9:37:41 AM11/13/12
to
Salve, sto cercando di ricavare le nuove email non lette da gmail con perl, il codice è questo:

[CODE]
#!/usr/bin/perl
use strict;
use Mail::IMAPClient;
use IO::Socket::SSL;

my $username = 'mye...@gmail.com';
my $password = 'mypasswd';

my $socket = IO::Socket::SSL->new(
PeerAddr => 'gmail-imap.l.google.com',
PeerPort => 993
) or die "socket(): $@";

my $client = Mail::IMAPClient->new(
Socket => $socket,
User => $username,
Password => $password,
Uid => 1,
) or die "new(): $@";

if ($client->IsAuthenticated()) {
my $msgct;

$client->select("INBOX");
$msgct = $client->unseen_count||'0';
print "Email unread: $msgct\n";

my @unread = $client->unseen or warn "Could not find unseen msgs: $@\n";

foreach (@unread) {
print "$@\n";
print $_ . " - " . $client->fetch($_) . "\n";
}
}
$client->logout();
[/CODE]

ma come output mi restituisce:

[CODE]
king@homepc:~$ ./script.pl
Email unread: 3
12730 -
5 BAD Could not parse command
12740 -
6 BAD Could not parse command
12746 -
7 BAD Could not parse command
king@homepc:~$ ./script.pl
[/CODE]

il pratica ci sono dei problemi con il fetch, ma non riesco a capire perché.
Qualcuno sa darmi un consiglio ?

aldo.c...@gmail.com

unread,
Nov 13, 2012, 10:52:18 AM11/13/12
to
On Tuesday, 13 November 2012 15:37:41 UTC+1, fino...@gmail.com wrote:
> il pratica ci sono dei problemi con il fetch, ma non riesco a capire perché.
>
> Qualcuno sa darmi un consiglio ?

beh, non gli hai detto cosa deve FETCHare... come *minimo* ci vuole:

$client->fetch($_, 'ALL')

gli argomenti del comando FETCH sono documentati qui:

http://tools.ietf.org/html/rfc3501#section-6.4.5

cheers,
Aldo

enoquick

unread,
Nov 13, 2012, 11:18:55 AM11/13/12
to
Il 13/11/2012 09:52, aldo.c...@gmail.com ha scritto:
> On Tuesday, 13 November 2012 15:37:41 UTC+1, fino...@gmail.com wrote:
>> il pratica ci sono dei problemi con il fetch, ma non riesco a capire perch�.
>>
>> Qualcuno sa darmi un consiglio ?
>
> beh, non gli hai detto cosa deve FETCHare... come *minimo* ci vuole:
>
> $client->fetch($_, 'ALL')
>
> gli argomenti del comando FETCH sono documentati qui:
>
> http://tools.ietf.org/html/rfc3501#section-6.4.5
>
> cheers,
> Aldo
>

Poich� fetch ritorna un array ref:
join("\n",$client->fetch($_,'ALL'))
nella print

enoquick

unread,
Nov 13, 2012, 11:20:18 AM11/13/12
to
Correzione:
ritorna un array

fino...@gmail.com

unread,
Nov 13, 2012, 11:42:50 AM11/13/12
to
Il giorno martedì 13 novembre 2012 17:20:20 UTC+1, enoquick ha scritto:
> Il 13/11/2012 10:18, enoquick ha scritto:
>
> > Il 13/11/2012 09:52, aldo.c...@gmail.com ha scritto:
>
> >> On Tuesday, 13 November 2012 15:37:41 UTC+1, fino...@gmail.com wrote:
>
> >>> il pratica ci sono dei problemi con il fetch, ma non riesco a capire
>
> >>> perché.
>
> >>>
>
> >>> Qualcuno sa darmi un consiglio ?
>
> >>
>
> >> beh, non gli hai detto cosa deve FETCHare... come *minimo* ci vuole:
>
> >>
>
> >> $client->fetch($_, 'ALL')
>
> >>
>
> >> gli argomenti del comando FETCH sono documentati qui:
>
> >>
>
> >> http://tools.ietf.org/html/rfc3501#section-6.4.5
>
> >>
>
> >> cheers,
>
> >> Aldo
>
> >>
>
> >
>
> > Poichè fetch ritorna un array ref:
>
> > join("\n",$client->fetch($_,'ALL'))
>
> > nella print
>
> >
>
>
>
> Correzione:
>
> ritorna un array

Quindi ? non ho capito cosa dovrei fare ?
Grazie

enoquick

unread,
Nov 13, 2012, 11:48:50 AM11/13/12
to
Il 13/11/2012 10:42, fino...@gmail.com ha scritto:
> Il giorno marted� 13 novembre 2012 17:20:20 UTC+1, enoquick ha scritto:
>> Il 13/11/2012 10:18, enoquick ha scritto:
>>
>>> Il 13/11/2012 09:52, aldo.c...@gmail.com ha scritto:
>>
>>>> On Tuesday, 13 November 2012 15:37:41 UTC+1, fino...@gmail.com wrote:
>>
>>>>> il pratica ci sono dei problemi con il fetch, ma non riesco a capire
>>
>>>>> perch�.
>>
>>>>>
>>
>>>>> Qualcuno sa darmi un consiglio ?
>>
>>>>
>>
>>>> beh, non gli hai detto cosa deve FETCHare... come *minimo* ci vuole:
>>
>>>>
>>
>>>> $client->fetch($_, 'ALL')
>>
>>>>
>>
>>>> gli argomenti del comando FETCH sono documentati qui:
>>
>>>>
>>
>>>> http://tools.ietf.org/html/rfc3501#section-6.4.5
>>
>>>>
>>
>>>> cheers,
>>
>>>> Aldo
>>
>>>>
>>
>>>
>>
>>> Poich� fetch ritorna un array ref:
>>
>>> join("\n",$client->fetch($_,'ALL'))
>>
>>> nella print
>>
>>>
>>
>>
>>
>> Correzione:
>>
>> ritorna un array
>
> Quindi ? non ho capito cosa dovrei fare ?
> Grazie
>


sostituisci
print $_ . " - " . $client->fetch($_) . "\n";

con


print $_ . " - " . join("\n",$client->fetch($_,'ALL')) . "\n";


aldo.c...@gmail.com

unread,
Nov 13, 2012, 11:53:03 AM11/13/12
to
On Tuesday, 13 November 2012 17:42:50 UTC+1, fino...@gmail.com wrote:
> Quindi ? non ho capito cosa dovrei fare ?

giustamente tu chiedevi un consiglio: evita di usare fetch, e' una funzione di basso livello e quello che restituisce (un array, come fa giustamente notare enoquick) andrebbe comunque con ogni probabilita' processato ulteriormente.

Mail::IMAPClient ha metodi piu' semplici tipo subject, body, o al limite get_header. a meno che non ti servano cose estremamente complesse, dovrebbero esserti sufficienti quelli.

cheers,
Aldo

fino...@gmail.com

unread,
Nov 13, 2012, 12:02:40 PM11/13/12
to
si, a me basta recuperare il subject delle email, quindi userò una di quelle.
Grazie
0 new messages