PHPackages                             tafoyaventures/php-dmarc - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. tafoyaventures/php-dmarc

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

tafoyaventures/php-dmarc
========================

A simple DMARC report parser for PHP.

v2.0.2(6y ago)27MITPHPPHP &gt;=5.3.0

Since Sep 26Pushed 6y agoCompare

[ Source](https://github.com/tafoyaventures/php-dmarc)[ Packagist](https://packagist.org/packages/tafoyaventures/php-dmarc)[ Docs](https://github.com/tafoyaventures/php-dmarc)[ RSS](/packages/tafoyaventures-php-dmarc/feed)WikiDiscussions master Synced today

READMEChangelog (1)DependenciesVersions (6)Used By (0)

php-dmarc - A simple DMARC report parser for PHP
================================================

[](#php-dmarc---a-simple-dmarc-report-parser-for-php)

php-dmarc is a small PHP class I wrote to parse [DMARC](http://dmarc.org) aggregate reports and put the data in a MySQL database for easy analysis. The idea is that when recipients start supporting delivery of reports using HTTP, then this can form part of an endpoint that receives and automatically parses the reports.

Improvements/fixes welcome.

Installation
------------

[](#installation)

The library is available on Packagist ([tafoyaventures/php-dmarc](https://packagist.org/packages/tafoyaventures/php-dmarc)) and can be installed using [Composer](http://getcomposer.org/). Alternatively you can grab the code directly from GitHub and include the `DmarcAggregateParser.php` script directly or via a PSR-0 autoloader.

Usage
-----

[](#usage)

- Set up your database. `tables.sql` contains the SQL needed to set up the tables.
- Use the `Solaris\DmarcAggregateParser` class to parse reports - you need to supply it with database credentials, and then run the `parse()` function with an array of files to parse. Something like this:

    ```
      $parser = new Solaris\DmarcAggregateParser( 'dbhost', 'dbuser', 'dbpass', 'dbname' );
      $parser->parse( array( 'report-file-1.xml', 'report-file-2.xml', 'report-file-3.xml' ) );

    ```

    You can supply either XML files or ZIP files. It is assumed that each ZIP file contains only one report.
- Knock your self out analysing the data.

The `parse()` function returns `false` if it encounters any errors while parsing the data (`true` otherwise). To see what the errors were, use the `get_errors()` method, which will return an array of error messages.

### Original Developer

[](#original-developer)

Samir Shah  is the original developer, but the project has been abandoned.

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor1

Top contributor holds 71.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~586 days

Total

5

Last Release

2262d ago

Major Versions

v1.0.2 → v2.0.02016-07-24

### Community

Maintainers

![](https://www.gravatar.com/avatar/5f2a110a0584defebf67f20a814a73e1fd431f6203d1bbc25bd6056cc172a95d?d=identicon)[btafoya](/maintainers/btafoya)

---

Top Contributors

[![solarissmoke](https://avatars.githubusercontent.com/u/160227?v=4)](https://github.com/solarissmoke "solarissmoke (20 commits)")[![jkrehm](https://avatars.githubusercontent.com/u/999845?v=4)](https://github.com/jkrehm "jkrehm (2 commits)")[![btafoya](https://avatars.githubusercontent.com/u/4192106?v=4)](https://github.com/btafoya "btafoya (2 commits)")[![warlord0](https://avatars.githubusercontent.com/u/9975039?v=4)](https://github.com/warlord0 "warlord0 (1 commits)")[![Naugrimm](https://avatars.githubusercontent.com/u/5753604?v=4)](https://github.com/Naugrimm "Naugrimm (1 commits)")[![m-hume](https://avatars.githubusercontent.com/u/3430210?v=4)](https://github.com/m-hume "m-hume (1 commits)")[![Synchro](https://avatars.githubusercontent.com/u/81561?v=4)](https://github.com/Synchro "Synchro (1 commits)")

---

Tags

phpdmarc

### Embed Badge

![Health badge](/badges/tafoyaventures-php-dmarc/health.svg)

```
[![Health](https://phpackages.com/badges/tafoyaventures-php-dmarc/health.svg)](https://phpackages.com/packages/tafoyaventures-php-dmarc)
```

###  Alternatives

[nikic/phlexy

Lexing experiments in PHP

162570.9k13](/packages/nikic-phlexy)[corveda/php-sandbox

A PHP library that can be used to run PHP code in a sandboxed environment

23483.5k2](/packages/corveda-php-sandbox)[blancks/fast-jsonpatch-php

Class designed to efficiently handle JSON Patch operations in accordance with the RFC 6902 specification

396.4k](/packages/blancks-fast-jsonpatch-php)[bupy7/xml-constructor

The array-like constructor of XML document structure.

1337.9k](/packages/bupy7-xml-constructor)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
