Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alexandresalome/mailcatcher
A library to manipulate Mailcatcher API
https://github.com/alexandresalome/mailcatcher
Last synced: 4 days ago
JSON representation
A library to manipulate Mailcatcher API
- Host: GitHub
- URL: https://github.com/alexandresalome/mailcatcher
- Owner: alexandresalome
- License: mit
- Created: 2013-07-07T22:34:02.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2024-03-29T15:45:49.000Z (8 months ago)
- Last Synced: 2024-07-27T21:48:23.367Z (4 months ago)
- Language: PHP
- Size: 88.9 KB
- Stars: 129
- Watchers: 3
- Forks: 37
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# MailCatcher for PHP
![Build status](https://travis-ci.org/alexandresalome/mailcatcher.png?branch=master) [![Latest Stable Version](https://poser.pugx.org/alexandresalome/mailcatcher/v/stable)](https://packagist.org/packages/alexandresalome/mailcatcher) [![Total Downloads](https://poser.pugx.org/alexandresalome/mailcatcher/downloads)](https://packagist.org/packages/alexandresalome/mailcatcher) [![License](https://poser.pugx.org/alexandresalome/mailcatcher/license)](https://packagist.org/packages/alexandresalome/mailcatcher) [![Monthly Downloads](https://poser.pugx.org/alexandresalome/mailcatcher/d/monthly)](https://packagist.org/packages/alexandresalome/mailcatcher) [![Daily Downloads](https://poser.pugx.org/alexandresalome/mailcatcher/d/daily)](https://packagist.org/packages/alexandresalome/mailcatcher)
Integrates [MailCatcher](http://mailcatcher.me) in your PHP application.
* [View CHANGELOG](CHANGELOG.md)
* [View CONTRIBUTORS](CONTRIBUTORS.md)MailCatcher is a simple SMTP server with an HTTP API, and this library aims to
integrate it to make it easy to use it with PHP.## Behat extension
This library provides a Behat extension to help you test mails in your application.
To use it, you first need to be sure [MailCatcher](http://mailcatcher.me) is
properly installed and running. You can use docker to execute it:```bash
docker run -d -p 1080:1080 -p 1025:1025 --name mailcatcher schickling/mailcatcher
```First, configure in your ``behat.yml``:
```yaml
default:
extensions:
Alex\MailCatcher\Behat\MailCatcherExtension\Extension:
url: http://localhost:1080
purge_before_scenario: true
```Then, add the **MailCatcherContext** context in your **FeatureContext** file:
```php
use Alex\MailCatcher\Behat\MailCatcherContext;
use Behat\Behat\Context\BehatContext;class FeatureContext extends BehatContext
{
public function __construct(array $parameters)
{
$this->useContext('mailcatcher', new MailCatcherContext());
}
}
```### Available steps
This extension provides you mail context in your tests. To use assertions, you
must first **open a mail** using criterias.Once it's opened, you can make **assertions** on it and **click** in it.
**Server manipulation**
Deletes all messages on the server
* When I purge mails
**Mail opening**
* When I open mail from "**[email protected]**"
* When I open mail containing "**a message**"
* When I open mail to "**[email protected]**"
* When I open mail with subject "**Welcome, mister Bond!**"**Assertion**
Verify number of messages sent to the server:
* Then **1** mail should be sent
* Then **13** mails should be sentVerify text presence in message:
* Then I should see "**something**" in mail
* Then I should see "**something else**" in mailVerify text presence in mail without opening:
* Then I should see mail from "**[email protected]**"
* Then I should see mail containing "**a message**"
* Then I should see mail to "**[email protected]**"
* Then I should see mail with subject "**Welcome, mister Bond!**"### Custom mailcatcher context
**Only available from PHP 5.4**
If you want to create a context class that relates to MailCatcher, you can use the **MailCatcherTrait** to get the mailcatcher client injected inside your class:
```php
use Alex\MailCatcher\Behat\MailCatcherAwareInterface;
use Alex\MailCatcher\Behat\MailCatcherTrait;
use Alex\MailCatcher\Message;
use Behat\Behat\Context\Context;class WelcomeContext implements Context, MailCatcherAwareInterface
{
use MailCatcherTrait;/**
* @Then /^a welcome mail should be sent$/
*/
public function testTrait()
{
$this->findMail(Message::SUBJECT_CRITERIA, 'Welcome!');
}
}
```This trait offers the following methods:
* **getMailCatcherClient()**: returns the mailcatcher **Client** instance.
* **findMail($criteria, $value)**: facility to search for a given message, or throws an exception if not found**Don't forget** to implement the **MailCatcherAwareInterface** to get the mailcatcher client injected inside your context class.
## Client API
Browse easily your API with the integrated SDK:
```php
$client = new Alex\MailCatcher\Client('http://localhost:1080');// Returns all messages
$messages = $client->search();// Count messages
$client->getMessageCount();// Filter messages
$messages = $client->search(array(
'from' => '[email protected]',
'to' => '[email protected]',
'subject' => 'Bla',
'contains' => 'Hello',
'attachments' => true,
'format' => 'html',
), $limit = 3);// Search one message
$message = $client->searchOne(array('subject' => 'Welcome'));
```**Message API**
```php
// Message API, get the content of a message
$subject = $message->getSubject();
$plainTextBody = $message->getPart('text/plain')->getContent();
$htmlBody = $message->getPart('text/html')->getContent();// Message API, return a Person object or an array of Person object
$person = $message->getFrom();
$persons = $message->getRecipients();// Person API
$person = $message->getFrom();$name = $person->getName(); // null means not provided
$mail = $person->getMail();// Attachments
$message->hasAttachments();
$message->getAttachments();// Delete
$message->delete();
```**Attachment API**
```php
// Attachment API
$attachment->getFilename();
$attachment->getSize();
$attachment->getType();
$attachment->getContent();
```