The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

WWW::GMail - Perl extension for accessing Google Mail (gmail)

SYNOPSIS

use WWW::GMail;

my $obj = WWW::GMail->new(
	username => "USERNAME",
	password => "PASSWORD",
	cookies => {
		autosave => 1,
		file => "./gmail.cookie",
	},
);

my $ret = $obj->login();
if ($ret == -1) {
	print "password incorrect\n";
} elsif ($ret == 0) {
	print "unable to login $obj->{error}\n";
	exit;
}

my @list = $obj->get_message_list('inbox');

# count the new messages in the inbox
my $new_msgs = 0;
for my $i ( 0 .. $#list ) {
	$new_msgs += $list[$i]->[1]; # count the unread flags
}

print "you have $new_msgs new messages in your inbox\n";

my @contacts = $obj->get_contact_list();
print "you have ".(@contacts)." contacts\n";

my $gmail = 0;
for my $i ( 0 .. $#contacts ) {
	$gmail += ($contacts[$i]->[3] =~ m/gmail\.com$/i);
}

print "$gmail of them are gmail addresses\n";

$obj->logout();

ABSTRACT

This module simplifies access to gmail.

DESCRIPTION

Currently this module allows retrieval of message lists, raw messages, and the contact list. All requests to gmail are secured using ssl.

Methods

There are currently 5 methods

new

This will setup the object, useragent and cookie jar.

The HTTP::Cookies object is stored as $obj->{jar} The LWP::UserAgent object is stored as $obj->{ua}

The new method accepts a hash of options:

username

GMail username, stored as $obj->{username}

password

GMail password, stored as $obj->{password}

cookies

A hash ref of options passed to HTTP::Cookies Specify {} to make the session temporary.

agent

* Optional! A useragent string passed to LWP::UserAgent

login

Logs into GMail, DO THIS FIRST, duh...

Return values are: 1 login correct 0 some error happend, check $obj->{error} for reason -1 incorrect password and/or username

get_message_list

This method returns an array of arrays Each array has an array ref of info about the message Currenly, WWW::GMail doesn't strip the html entities, do that yourself for now. A future version will have an option passed to new() to adjust this.

The array

    0	message id (pass this to get_message_raw)
    1	unread = 1,read = 0
    2	starred = 1,not = 0
    3	date
    4	from
    5	indicator
    6	subj
    7	sent
    8	labels
    9	attachments
    10	message id (again?)
    11	? unknown

See the SYNOPSIS

Also available after calling get_message_list is:

 Used space	$self->{used}
 Total space	$self->{total}
 Percent used	$self->{percent_used}
 Per page	$self->{per_page}
 List total	$self->{list_total}
 List folder	$self->{list_folder}

 Labels	$self->{labels} (an array of arrays)
 
 The array
	 0	label
	 1	number of new
get_message_raw

Pass it a message id from a message list (see get_message_list) Retrieves the raw message as a scalar, headers and all. Returns undef if there was an error or invalid id Check $obj->{error} for messages

get_contact_list

Returns all contacts in an array of arrayrefs. Contact id is not strictly a number. I have ids such as 11b, be, 1b, d2, 117, 11f

Each array ref has

    0	Contact id
    1	Name
    2	Name or blank (not sure what this is)
    3	Email
    4	Notes
logout

Logs out the current logged in account.

EXPORT

Nothing. Its all Object Orientated.

SEE ALSO

LWP::UserAgent, HTTP::Cookies

TODO

Contact management, label management, and better docs. Also, what happends when the js_version changes? Enable persistant cookie?

AUTHOR

David Davis <xantus@cpan.org>

NOTICE

**Use this module at your own risk, and read your Gmail terms of use**

COPYRIGHT AND LICENSE

Copyright 2004 by David Davis and Teknikill Software

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

4 POD Errors

The following errors were encountered while parsing the POD:

Around line 494:

=back doesn't take any parameters, but you said =back 4

Around line 529:

=back doesn't take any parameters, but you said =back 4

Around line 570:

=back doesn't take any parameters, but you said =back 4

Around line 576:

=back doesn't take any parameters, but you said =back 4