https://github.com/anod/gmail-imap-php
API to work with Gmail using IMAP built on top of Zend Imap Library
https://github.com/anod/gmail-imap-php
gmail imap php zend-imap-library
Last synced: 9 months ago
JSON representation
API to work with Gmail using IMAP built on top of Zend Imap Library
- Host: GitHub
- URL: https://github.com/anod/gmail-imap-php
- Owner: anod
- Created: 2013-03-15T21:47:12.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2020-01-27T10:55:51.000Z (almost 6 years ago)
- Last Synced: 2025-03-08T15:03:40.301Z (10 months ago)
- Topics: gmail, imap, php, zend-imap-library
- Language: PHP
- Homepage:
- Size: 38.1 KB
- Stars: 67
- Watchers: 8
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
GMAIL IMAP API in PHP
=============================
Wrapper library above Gmail IMAP API.
## Features
The library extends Zend Imap Library, this way it provides all basic IMAP functionality.
In addition it provides simple Gmail specific API for:
* OAUTH2 Authentication
* get UID of the message
* work with GMail labels: retrive, apply, remove
* Getting Gmail thread id
* Utility to convert Gmail message id representation: from big int to hex and opposite
* Archive message
## TODO
* move to inbox
* mark as read/unread
## Requirements
Composer
* Zend Imap Library
## Usage example
```php
setId("Example App", "0.1", "Alex Gavrishev", "alex.gavrishev@gmail.com");
$gmail->connect();
$gmail->authenticate($email, $token);
$gmail->sendId();
$gmail->selectInbox();
$uid = $gmail->getUID($msgId);
$gmail->applyLabel($uid, "Very Important"); // Apply label to a message with specific UID
$gmail->removeLabel($uid, "Not Important"); // Remove label to a message with specific UID
$message = $gmail->getMessageData($uid); // Retrieve message content
$details = array(
'subject' => $message->getHeader('subject', 'string'),
'body' => $message->getContent(),
'from' => $message->getHeader('from', 'string'),
'to' => $message->getHeader('to', 'string'),
'thrid' => \Anod\Gmail\Math::bcdechex($message->getThreadId()),
'labels' => $message->getLabels()
);
$gmail->archive($uid); // Archive the message
```
Example of fetching token with local server `php -S localhost:8000`
```php
$clientId,
'client_secret' => $clientSecret,
'redirect_uri' => $redirectUri
]);
// Scope for IMAP access
$client->addScope("https://mail.google.com/");
if (isset($_GET['code'])) {
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
$_SESSION['gmail_token'] = $token;
// redirect back to the example
header('Location: ' . filter_var($redirectUri, FILTER_SANITIZE_URL));
exit;
}
if (!empty($_SESSION['gmail_token'])) {
$client->setAccessToken($_SESSION['gmail_token']);
if ($client->isAccessTokenExpired()) {
unset($_SESSION['gmail_token']);
}
} else {
$authUrl = $client->createAuthUrl();
}
if ($authUrl) {
$authUrl = $client->createAuthUrl();
header("Location: $authUrl");
exit;
}
$token = $client->getAccessToken()['access_token'];
echo "Token: $token\n\n";
```
## Author
Alex Gavrishev, 2013
## License
Library is licensed under the MIT license.