PHPackages                             solaris/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. solaris/php-dmarc

AbandonedArchivedLibrary

solaris/php-dmarc
=================

A simple DMARC report parser for PHP.

v2.0.1(9y ago)701.8k↓40%21MITPHPPHP &gt;=5.3.0

Since Sep 26Pushed 8y ago8 watchersCompare

[ Source](https://github.com/solarissmoke/php-dmarc)[ Packagist](https://packagist.org/packages/solaris/php-dmarc)[ Docs](http://www.github.com/solarissmoke/php-dmarc)[ RSS](/packages/solaris-php-dmarc/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)DependenciesVersions (5)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 ([solaris/php-dmarc](http://packagist.org/packages/solaris/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.

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity36

Limited adoption so far

Community21

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 76.9% 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 ~377 days

Total

4

Last Release

3485d ago

Major Versions

v1.0.2 → v2.0.02016-07-24

### Community

Maintainers

![](https://www.gravatar.com/avatar/fb6525bdf0b9bc628522d50e4b3dbb0e790500c154b0de255cf133619843efd0?d=identicon)[solaris](/maintainers/solaris)

---

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)")[![m-hume](https://avatars.githubusercontent.com/u/3430210?v=4)](https://github.com/m-hume "m-hume (1 commits)")[![Naugrimm](https://avatars.githubusercontent.com/u/5753604?v=4)](https://github.com/Naugrimm "Naugrimm (1 commits)")[![Synchro](https://avatars.githubusercontent.com/u/81561?v=4)](https://github.com/Synchro "Synchro (1 commits)")[![warlord0](https://avatars.githubusercontent.com/u/9975039?v=4)](https://github.com/warlord0 "warlord0 (1 commits)")

---

Tags

phpdmarc

### Embed Badge

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

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

###  Alternatives

[pestphp/pest-plugin-stressless

Stressless plugin for Pest

67792.6k16](/packages/pestphp-pest-plugin-stressless)

PHPackages © 2026

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