BANK MAILs Parser
Library for processing bank confirmation emails.
Currently supports:
- TatraBanka - Two email formats (TatraBankaMailParser, TatraBankaSimpleMailParser, TatraBankaStatementMailParser)
- ČSOB CZ - Czech ČSOB emails (CsobMailParser)
- ČSOB SK - Slovak ČSOB emails (SkCsobMailParser), (*1)
, (*2)
, (*3)
Installation
Install package via composer:, (*4)
``` bash
$ composer require tomaj/bank-mails-parser, (*5)
Usage
-----
### TatraBanka parsers
Basic usage with TatraBanka parser:
``` 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., (*6)
``` php
echo $mailContent->getCid() . "\n";
echo $mailContent->getSign() . "\n";
echo $mailContent->getRes() . "\n";, (*7)
With *TatraBankaStatementMailParser* you can parse encrypted PGP emails containing payment statements:
``` php
use Tomaj\BankMailsParser\Parser\TatraBanka\TatraBankaStatementMailParser;
use Tomaj\BankMailsParser\Parser\TatraBanka\TatraBankaMailDecryptor;
$decryptor = new TatraBankaMailDecryptor('/path/to/private-key.asc', 'passphrase');
$parser = new TatraBankaStatementMailParser($decryptor);
$mailContents = $parser->parseMulti('encrypted mail content');
foreach ($mailContents as $mailContent) {
echo $mailContent->getVs() . "\n";
echo $mailContent->getAmount() . "\n";
echo $mailContent->getCurrency() . "\n";
}
ČSOB parsers
For Czech ČSOB emails:, (*8)
``` php
use Tomaj\BankMailsParser\Parser\Csob\CsobMailParser;, (*9)
$csobMailParser = new CsobMailParser();
$mailContents = $csobMailParser->parseMulti('mail content');, (*10)
foreach ($mailContents as $mailContent) {
echo $mailContent->getVs() . "\n";
echo $mailContent->getKs() . "\n";
echo $mailContent->getAmount() . "\n";
echo $mailContent->getCurrency() . "\n";
echo $mailContent->getAccountNumber() . "\n";
echo $mailContent->getSourceAccountNumber() . "\n";
}, (*11)
For Slovak ČSOB emails:
``` php
use Tomaj\BankMailsParser\Parser\Csob\SkCsobMailParser;
$skCsobMailParser = new SkCsobMailParser();
$mailContents = $skCsobMailParser->parseMulti('mail content');
foreach ($mailContents as $mailContent) {
echo $mailContent->getVs() . "\n";
echo $mailContent->getKs() . "\n";
echo $mailContent->getAmount() . "\n";
echo $mailContent->getCurrency() . "\n";
echo $mailContent->getAccountNumber() . "\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, (*12)
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., (*13)
Usage with imap mail downlaoder
Example how to use with imap mail downloader:, (*14)
``` php
use Tomaj\ImapMailDownloader\Downloader;
use Tomaj\ImapMailDownloader\MailCriteria;
use Tomaj\ImapMailDownloader\Email;
use Tomaj\BankMailsParser\Parser\TatraBanka\TatraBankaMailParser;, (*15)
$downloader = new Downloader('imap host', port, 'username', 'password');, (*16)
$criteria = new MailCriteria();
$criteria->setFrom('some@email.com');
$downloader->fetch($criteria, function(Email $email) {
$tatraBankaMailParser = new TatraBankaMailParser();
$mailContent = $tatraBankaMailParser->parse($email->getBody());, (*17)
// process $mailContent data...
return true;
});
```, (*18)
Note: You have to include package imap-email-downloader: composer require tomaj/imap-email-downloader, (*19)
TODO
Add parsers for other banks confirmation emails.
Feel free to fork and create pull requests with other banks parsers., (*20)
Available parsers:
- ✅ TatraBanka (Slovakia) - TatraBankaMailParser, TatraBankaSimpleMailParser, TatraBankaStatementMailParser
- ✅ ČSOB CZ (Czech Republic) - CsobMailParser
- ✅ ČSOB SK (Slovakia) - SkCsobMailParser, (*21)