Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

read gmail and extract cc field

by Anonymous Monk
on Jun 08, 2017 at 07:50 UTC ( #1192331=perlquestion: print w/replies, xml ) Need Help??

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Dear monks, i have written a small script to check my gmail inbox and report the latest 5 messages. What i cannot figure out i how to extract the cc field from the email header. Hope someone can tell me, thank you.

use Mail::IMAPClient; use IO::Socket::SSL; $sock = IO::Socket::SSL->new( PeerAddr => "", PeerPort => 993) or die $@; $client = Mail::IMAPClient->new( Socket => $sock, User => '', Password => '*****' ); $client->select("INBOX"); @messages = $client->messages; for($x=1;$x<=5;$x++){ $bs = pop(@messages); $from = $client->get_header($bs,"from"); $date = $client->get_header($bs,"date"); $subj = $client->get_header($bs,"subject"); print "From:$from\nDate:$date\nSubject:$subj\n\n"; } $client->logout();

Replies are listed 'Best First'.
Re: read gmail and extract cc field -- Email::Simple
by Discipulus (Abbot) on Jun 08, 2017 at 08:31 UTC

    In a recent post i played a little with my gmail account and it seems that Email::Simple just works well.

    If you use the code of the above thread and add print "Cc:\t",$es->header('Cc'),"\n"; where $es is the Email::Simple object, you'll find what you are looking for.


    There are no rules, there are no thumbs..
    Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.
Re: read gmail and extract cc field
by hippo (Bishop) on Jun 08, 2017 at 08:24 UTC

    Adding this line works fine for me:

    $cc = $client->get_header($bs,"cc");

    At least on an IMAP server I have access to. If that doesn't work for you, I guess it's a gmail-specific thing.

      No, I've tried that.

        I would then inspect whether Gmail IMAP even sends you the Cc header by using the ->parse_headers method.

        Maybe the name of the header is not cc but Cc.

        use Data::Dumper; warn Dumper $client->parse_headers( $msgid );
Re: read gmail and extract cc field
by thanos1983 (Parson) on Jun 08, 2017 at 08:24 UTC

    Hello Anonymous Monk,

    Well you need the extension of the module Mail::IMAPClient::BodyStructure.

    From the documentation:

    This extension will parse the result of an IMAP FETCH BODYSTRUCTURE co +mmand into a perl data structure. It also provides helper methods to +help pull information out of the data structure.

    Sample from the module description Mail::IMAPClient::BodyStructure::Envelope:

    { subject => "subject", inreplyto => "reference_message_id", from => [ addressStruct1 ], messageid => "message_id", bcc => [ addressStruct1, addressStruct2 ], date => "Tue, 09 Jul 2002 14:15:53 -0400", replyto => [ adressStruct1, addressStruct2 ], to => [ adressStruct1, addressStruct2 ], sender => [ adressStruct1 ], cc => [ adressStruct1, addressStruct2 ], }

    Hope this helps.

    Seeking for Perl wisdom...on the process of learning...not there...yet!

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1192331]
Front-paged by Corion
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (8)
As of 2022-01-20 10:20 GMT
Find Nodes?
    Voting Booth?
    In 2022, my preferred method to securely store passwords is:

    Results (56 votes). Check out past polls.