Code Monkey home page Code Monkey logo

php-imap's Introduction

PHP IMAP

GitHub release Software License Packagist Build Status Supported PHP Version Maintainability Test Coverage Type Coverage

Initially released in December 2012, the PHP IMAP Mailbox is a powerful and open source library to connect to a mailbox by POP3, IMAP and NNTP using the PHP IMAP extension. This library allows you to fetch emails from your email server. Extend the functionality or create powerful web applications to handle your incoming emails.

Features

  • Connect to mailbox by POP3/IMAP/NNTP, using PHP IMAP extension
  • Get emails with attachments and inline images
  • Get emails filtered or sorted by custom criteria
  • Mark emails as seen/unseen
  • Delete emails
  • Manage mailbox folders

Requirements

PHP Version php-imap Version
5.6 3.x
7.0 3.x
7.1 3.x
7.2 3.x, 4.x
7.3 3.x, 4.x
7.4 >3.0.33, 4.x
  • PHP fileinfo extension must be present; so make sure this line is active in your php.ini: extension=php_fileinfo.dll
  • PHP iconv extension must be present; so make sure this line is active in your php.ini: extension=php_iconv.dll
  • PHP imap extension must be present; so make sure this line is active in your php.ini: extension=php_imap.dll
  • PHP mbstring extension must be present; so make sure this line is active in your php.ini: extension=php_mbstring.dll

Installation by Composer

Install the latest available release:

$ composer require php-imap/php-imap

Install the latest available and stable source code from master, which is may not released / tagged yet:

$ composer require php-imap/php-imap:dev-master

Install the latest available and may unstable source code from develop, which is may not properly tested yet:

$ composer require php-imap/php-imap:dev-develop

Run Tests

Before you can run the any tests you may need to run composer install to install all (development) dependencies.

Run all tests

You can run all available tests by running the following command (inside of the installed php-imap directory): composer run tests

Run only PHPUnit tests

You can run all PHPUnit tests by running the following command (inside of the installed php-imap directory): php vendor/bin/phpunit --testdox

Integration with frameworks

Getting Started Example

Below, you'll find an example code how you can use this library. For further information and other examples, you may take a look at the wiki.

// Create PhpImap\Mailbox instance for all further actions
$mailbox = new PhpImap\Mailbox(
	'{imap.gmail.com:993/imap/ssl}INBOX', // IMAP server and mailbox folder
	'[email protected]', // Username for the before configured mailbox
	'*********', // Password for the before configured username
	__DIR__, // Directory, where attachments will be saved (optional)
	'UTF-8' // Server encoding (optional)
);

// set some connection arguments (if appropriate)
$mailbox->setConnectionArgs(
    CL_EXPUNGE // expunge deleted mails upon mailbox close
    | OP_SECURE // don't do non-secure authentication
);

try {
	// Get all emails (messages)
	// PHP.net imap_search criteria: http://php.net/manual/en/function.imap-search.php
	$mailsIds = $mailbox->searchMailbox('ALL');
} catch(PhpImap\Exceptions\ConnectionException $ex) {
	echo "IMAP connection failed: " . $ex;
	die();
}

// If $mailsIds is empty, no emails could be found
if(!$mailsIds) {
	die('Mailbox is empty');
}

// Get the first message
// If '__DIR__' was defined in the first line, it will automatically
// save all attachments to the specified directory
$mail = $mailbox->getMail($mailsIds[0]);

// Show, if $mail has one or more attachments
echo "\nMail has attachments? ";
if($mail->hasAttachments()) {
	echo "Yes\n";
} else {
	echo "No\n";
}

// Print all information of $mail
print_r($mail);

// Print all attachements of $mail
echo "\n\nAttachments:\n";
print_r($mail->getAttachments());

Method imap() allows to call any imap function in a context of the the instance:

// Call imap_check();
// http://php.net/manual/en/function.imap-check.php
$info = $mailbox->imap('check'); //

// Show current time for the mailbox
$currentServerTime = isset($info->Date) && $info->Date ? date('Y-m-d H:i:s', strtotime($info->Date)) : 'Unknown';

echo $currentServerTime;

Some request require much time and resources:

// If you don't need to grab attachments you can significantly increase performance of your application
$mailbox->setAttachmentsIgnore(true);

// get the list of folders/mailboxes
$folders = $mailbox->getMailboxes('*');

// loop through mailboxs
foreach($folders as $folder) {

	// switch to particular mailbox
	$mailbox->switchMailbox($folder['fullpath']);

	// search in particular mailbox
	$mails_ids[$folder['fullpath']] = $mailbox->searchMailbox('SINCE "1 Jan 2018" BEFORE "28 Jan 2018"');
}

print_r($mails_ids);

Recommended

php-imap's People

Contributors

bapcltd-marv avatar sebbo94by avatar barbushin avatar quentinus95 avatar thomaslandauer avatar srwiez avatar twmobius avatar stanma avatar commanddotcom avatar jellybellydev avatar dizzy7 avatar sharevb avatar nickl- avatar tomhorvat avatar ebrana-devs avatar agrisvv avatar theaxiom avatar stefangr avatar pedrolopes10 avatar hyncica avatar jlsalvador avatar georaldc avatar jekis avatar pixelpeter avatar mekdrop avatar hexathos avatar mrmysql avatar norkunas avatar tonylegrone avatar zayon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.