Skip to content

tomaj/bank-mails-parser

Repository files navigation

BANK MAILs Parser

Library for processing bank confirmation emails. Right now only support of Tatrabanka two emails formats.

If we will add more emails from other banks there will be need to do some refactoring (for example MailContent is strongly connected to TatraBanka)

Build Status Test Coverage Code Climate

Latest Stable Version Latest Unstable Version License

Installation

Install package via composer:

$ composer require tomaj/bank-mails-parser

Usage

Basic usage in php:

use Tomaj\BankMailsParser\Parser\TatraBanka\TatraBankaMailParser;

$tatraBankaMailParser = new TatraBankaMailParser();
$mailContent = $tatraBankaMailParser->parse('mail content');

echo $mailContent->getKs() . "\n";
echo $mailContent->getSs() . "\n";
echo $mailContent->getVs() . "\n";
echo $mailContent->getReceiverMessage() . "\n";
echo $mailContent->getDescription() . "\n";
echo $mailContent->getCurrency() . "\n";
echo $mailContent->getTransactionDate() . "\n";
echo $mailContent->getAccountNumber() . "\n";
echo $mailContent->getAmount() . "\n";
echo $mailContent->getAccountNumber() . "\n";
echo $mailContent->getTxn() . "\n";

With TatraBankaSimpleMailParser you can parse comforpay emails. There are other getters like CID for reccurent payments.

echo $mailContent->getCid() . "\n";
echo $mailContent->getSign() . "\n";
echo $mailContent->getRes() . "\n";

Upgrade from 2.* to 3.*

For using version 3 you will need at least php 7.1. There were introduced multiple breaking changes:

  1. Tomaj\BankMailsParser\Parser\ParserInterface will no return false anymore, only ?MailContent
  2. Introduced strict types for whole project declare(strict_types=1);
  3. All Tatrabanka related code was moved under TatraBanka folder with proper namespace
  4. Added strict types to all methods and params
  5. Upgrade phpunit to version 9

Upgrade from 1.* to 2.*

There is one breaking change in version 2.0 - parser returns MailContent always when email is parsed. In version 1.0 - parser returns MailContent only when response from bank was OK. In version 2 you can read also FAIL emails.

Usage with imap mail downlaoder

Example how to use with imap mail downloader:

use Tomaj\ImapMailDownloader\Downloader;
use Tomaj\ImapMailDownloader\MailCriteria;
use Tomaj\ImapMailDownloader\Email;
use Tomaj\BankMailsParser\Parser\TatraBanka\TatraBankaMailParser;

$downloader = new Downloader('*imap host*', *port*, '*username*', '*password*');

$criteria = new MailCriteria();
$criteria->setFrom('some@email.com');
$downloader->fetch($criteria, function(Email $email) {
    $tatraBankaMailParser = new TatraBankaMailParser();
	$mailContent = $tatraBankaMailParser->parse($email->getBody());
	
	// process $mailContent data...
	
	return true;
});

Note: You have to include package imap-email-downloader: composer require tomaj/imap-email-downloader

TODO

Add parses for other banks confirmation emails. Feel free to fork and create pull requests with other banks parsers.