oauth2_imap_from_token 848 B

1234567891011121314151617181920212223242526272829303132333435
  1. #!/usr/bin/perl
  2. use Mail::IMAPClient ;
  3. use MIME::Base64;
  4. my $access_token ;
  5. $access_token = $ARGV[1];
  6. my $username;
  7. $username = $ARGV[0]; # "imapsync.gl0@gmail.com" ;
  8. my $oauth_string = "user=" . $username . "\x01auth=Bearer ". $access_token . "\x01\x01" ;
  9. print "oauth_string: $oauth_string\n" ;
  10. #my $oauth_string_base64 = $access_token ;
  11. my $oauth_string_base64 = encode_base64( $oauth_string , '' ) ;
  12. print "oauth_string_base64: $oauth_string_base64\n" ;
  13. my $imap = Mail::IMAPClient->new(
  14. Server => 'imap.gmail.com',
  15. Port => 993,
  16. Ssl => 1,
  17. Uid => 1,
  18. Showcredentials => 1,
  19. ) or die("Can't connect to imap server.");
  20. $imap->Debug(1) ;
  21. $imap->authenticate('XOAUTH2', sub { return $oauth_string_base64 }) or die("Auth error: ". $imap->LastError);
  22. print join(", ",$imap->folders),".\n" or die("List folders error: ". $imap->LastError);