PHPackages                             phplist/phplist4-core - 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. [Mail &amp; Notifications](/categories/mail)
4. /
5. phplist/phplist4-core

Abandoned → [phplist/core](/?search=phplist%2Fcore)Symfony-bundle[Mail &amp; Notifications](/categories/mail)

phplist/phplist4-core
=====================

The core module of phpList, the world's most popular open source newsletter manager

v5.0.0-alpha8(10mo ago)911.4k30[8 issues](https://github.com/phpList/core/issues)[2 PRs](https://github.com/phpList/core/pulls)AGPL-3.0-or-laterPHPPHP ^8.1CI passing

Since Jan 31Pushed 1mo ago14 watchersCompare

[ Source](https://github.com/phpList/core)[ Packagist](https://packagist.org/packages/phplist/phplist4-core)[ Docs](https://www.phplist.com/)[ RSS](/packages/phplist-phplist4-core/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (43)Versions (18)Used By (0)

phpList Core Module
===================

[](#phplist-core-module)

[![Build Status](https://github.com/phpList/core/workflows/phpList%20Core%20Build/badge.svg)](https://github.com/phpList/core/actions)[![Latest Stable Version](https://camo.githubusercontent.com/1be136a97e5443c43585859ebc365c67d5ce42fc1a126501ef87e93e0315a395/68747470733a2f2f706f7365722e707567782e6f72672f7068706c6973742f636f72652f762f737461626c652e737667)](https://packagist.org/packages/phpList/core)[![Total Downloads](https://camo.githubusercontent.com/6db8798921ca34461248e941f26dad981d8fa422582a5f163a85d16949653186/68747470733a2f2f706f7365722e707567782e6f72672f7068706c6973742f636f72652f646f776e6c6f6164732e737667)](https://packagist.org/packages/phpList/core)[![Latest Unstable Version](https://camo.githubusercontent.com/a816926a5a672f9ace4fe2c74c6e429fcf889ce6fd70b0b5702ae9c04d85e457/68747470733a2f2f706f7365722e707567782e6f72672f7068706c6973742f636f72652f762f756e737461626c652e737667)](https://packagist.org/packages/phpList/core)[![License](https://camo.githubusercontent.com/a6550c2763925de2530a9f8f24959de191fb444b669ff197c0416fb3ffa9421c/68747470733a2f2f706f7365722e707567782e6f72672f7068706c6973742f636f72652f6c6963656e73652e737667)](https://packagist.org/packages/phpList/core)

About phpList
-------------

[](#about-phplist)

phpList is an open source newsletter manager. This project is a rewrite of the [original phpList](https://github.com/phpList/phplist3).

About this package
------------------

[](#about-this-package)

This is the core module of phpList 4, currently in alpha stage. It provides the following functionality:

- Database access via Doctrine models and repositories (and raw SQL for performance-critical parts)
- Routing (which the web frontend and REST API use)
- Authentication (which the web frontend and REST API use)
- Logging (including Graylog integration for centralized logging)
- Command line interface for maintenance tasks
- Database schema creation and updates
- Asynchronous email sending using Symfony Messenger

Please note that this module does not provide a web frontend or a REST API. There are separate modules for these purposes:

- [`phpList/web-frontend`](https://github.com/phpList/web-frontend)
- [`phpList/rest-api`](https://github.com/phpList/rest-api)

This module should not be modified locally. It should be updated via Composer.

Requirements
------------

[](#requirements)

- PHP 8.1 or higher
- Symfony 6.4 components
- Doctrine ORM 3.3

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

[](#installation)

Since this package is only a service required to run a full installation of **phpList 4**, the recommended way of installing this package is to run `composer install` from within the [phpList base distribution](https://github.com/phpList/base-distribution) which requires this package. [`phpList/base-distribution`](https://github.com/phpList/base-distribution) contains detailed installation instructions in its [README](https://github.com/phpList/base-distribution/blob/master/README.md).

Contributing to this package
----------------------------

[](#contributing-to-this-package)

Contributions to phpList repositories are highly welcomed! To get started please take a look at the [contribution guide](.github/CONTRIBUTING.md). It contains everything you would need to make your first contribution including how to run local style checks and run tests.

### Code of Conduct

[](#code-of-conduct)

This project adheres to a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project and its community, you are expected to uphold this code.

Documentation
-------------

[](#documentation)

- [Class Docs](docs/phpdoc/)
- [Class structure overview](docs/ClassStructure.md)
- [Graphic domain model](docs/DomainModel/DomainModel.svg) and [description of the domain entities](docs/DomainModel/Entities.md)
- [Mailer Transports](docs/mailer-transports.md) - How to use different email providers (Gmail, Amazon SES, Mailchimp, SendGrid)
- [Asynchronous Email Sending](docs/AsyncEmailSending.md) - How to use asynchronous email sending with Symfony Messenger

Running the web server
----------------------

[](#running-the-web-server)

The phpList application is configured so that the built-in PHP web server can run in development and testing mode, while Apache can run in production mode.

Please first set the database credentials in `config/parameters.yml`.

### Development

[](#development)

To run the application in development mode using PHP's built-in server, use this command:

```
bin/console server:run -d public/
```

The server will then listen on `http://127.0.0.1:8000` (or, if port 8000 is already in use, on the next free port after 8000).

You can stop the server with CTRL + C.

#### Development and Documentation

[](#development-and-documentation)

We use `phpDocumentor` to automatically generate documentation for classes. To make this process efficient and easier, you are required to properly "document" your `classes`,`properties`, `methods` ... by annotating them with [docblocks](https://docs.phpdoc.org/latest/guide/guides/docblocks.html).

More about generating docs in [PHPDOC.md](PHPDOC.md)

### Testing

[](#testing)

Create test db with name phplist in your mysql DB or uncomment sqlite part in config\_test.yml file to use in memory DB for functional tests. To run the server in testing mode (which normally will only be needed for the automated tests, provide the `--env` option:

```
bin/console server:run -d public/ --env=test
```

### Production

[](#production)

For documentation on running the application in production mode using Apache, please see the [phpList base distribution README](https://github.com/phpList/base-distribution).

Changing the database schema
----------------------------

[](#changing-the-database-schema)

Any changes to the database schema must always be done both in phpList 3 and later versions so that both versions always have the same schema.

For changing the database schema, please edit `resources/Database/Schema.sql`and adapt the corresponding domain model classes and repository classes accordingly.

Developing phpList modules (plugins)
------------------------------------

[](#developing-phplist-modules-plugins)

In phpList, plugins are called **modules**. They are Composer packages which have the type `phplist-module`.

### Bundle and route configuration

[](#bundle-and-route-configuration)

If your module provides any Symfony bundles, the bundle class names need to be listed in the `extra` section of the module's `composer.json` like this:

```
"extra": {
  "phplist/core": {
    "bundles": [
      "Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle",
      "PhpList\\Core\\EmptyStartPageBundle\\PhpListEmptyStartPageBundle"
    ]
  }
}
```

Please note that the key of the section with `extra` needs to always be `phplist/core`, not the name of your module package. Please have a look at the [`composer.json` in the `rest-api` module](https://github.com/phpList/rest-api/blob/master/composer.json)for an example.

Similarly, if your module provides any routes, those also need to be listed in the `extra` section of the module's `composer.json` like this:

```
"extra": {
  "phplist/core": {
    "routes": {
      "homepage": {
        "resource": "@PhpListEmptyStartPageBundle/Controller/",
        "type": "annotation"
      }
    }
  }
}
```

You can also provide system configuration for your module:

```
"extra": {
  "phplist/core": {
    "configuration": {
      "framework": {
        "templating": {
          "engines": [
            "twig"
          ]
        }
      }
    }
  }
}
```

It is recommended to define the routes using [annotations](https://symfony.com/doc/current/routing.html#routing-examples)in the controller classes so that the route configuration in the composer.json is minimal.

### Accessing the database

[](#accessing-the-database)

For accessing the phpList database tables from a module, please use the [Doctrine](http://www.doctrine-project.org/) model and repository classes stored in `src/Domain/` in the `phplist/core` package (this package).

For accessing a repository, please have it injected via [dependency injection](https://symfony.com/doc/current/components/dependency_injection.html). Please do not get the repository directly from the entity manager as this would skip dependency injection for that repository, causing those methods to break that rely on other services having been injected.

Currently, only a few database tables are mapped as models/repositories. If you need a mode or a repository method that still is missing, please [submit a pull request](https://github.com/phpList/core/pulls) or [file an issue](https://github.com/phpList/core/issues).

Accessing the phpList data from third-party applications
--------------------------------------------------------

[](#accessing-the-phplist-data-from-third-party-applications)

To access the phpList data from a third-party application (i.e., not from a phpList module), please use the [REST API](https://github.com/phpList/rest-api).

Email Configuration
-------------------

[](#email-configuration)

phpList supports multiple email transport providers through Symfony Mailer. The following transports are included:

- Gmail
- Amazon SES
- Mailchimp Transactional (Mandrill)
- SendGrid

For detailed configuration instructions, see the [Mailer Transports documentation](docs/mailer-transports.md).

Copyright
---------

[](#copyright)

phpList is copyright (C) 2000-2025 [phpList Ltd](https://www.phplist.com/).

### Translations

[](#translations)

command to extract translation strings

```
php bin/console translation:extract --force en --format=xlf
```

###  Health Score

53

—

FairBetter than 96% of packages

Maintenance77

Regular maintenance activity

Popularity32

Limited adoption so far

Community27

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 53.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 ~225 days

Recently: every ~25 days

Total

13

Last Release

311d ago

Major Versions

v4.0.0-alpha5 → v5.0.0-alpha12025-01-15

PHP version history (5 changes)v4.0.0-alpha1PHP ~7.0.0 || ~7.1.0 || ~7.2.0

v4.0.0-alpha3PHP &gt;=7.0

v4.0.0-alpha4PHP ^7.0|^8.0

v4.0.0-alpha5PHP ^7.2|^8.0

v5.0.0-alpha1PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/037bbc2508491c234e383f06d7d9d2c498287038887ca7fc12c9750ab015e094?d=identicon)[samtuke](/maintainers/samtuke)

![](https://www.gravatar.com/avatar/0547fb66da95b0064d5586513a5b61a915330920cc8e3a13f30682bde22fc509?d=identicon)[phplist](/maintainers/phplist)

---

Top Contributors

[![oliverklee](https://avatars.githubusercontent.com/u/765746?v=4)](https://github.com/oliverklee "oliverklee (238 commits)")[![samtuke](https://avatars.githubusercontent.com/u/695422?v=4)](https://github.com/samtuke "samtuke (96 commits)")[![SaWey](https://avatars.githubusercontent.com/u/1469848?v=4)](https://github.com/SaWey "SaWey (29 commits)")[![michield](https://avatars.githubusercontent.com/u/569843?v=4)](https://github.com/michield "michield (28 commits)")[![TatevikGr](https://avatars.githubusercontent.com/u/187495323?v=4)](https://github.com/TatevikGr "TatevikGr (21 commits)")[![tatevikg1](https://avatars.githubusercontent.com/u/61038422?v=4)](https://github.com/tatevikg1 "tatevikg1 (15 commits)")[![xh3n1](https://avatars.githubusercontent.com/u/9008509?v=4)](https://github.com/xh3n1 "xh3n1 (7 commits)")[![nfebe](https://avatars.githubusercontent.com/u/14317775?v=4)](https://github.com/nfebe "nfebe (6 commits)")[![marianaballa](https://avatars.githubusercontent.com/u/23120908?v=4)](https://github.com/marianaballa "marianaballa (2 commits)")[![moshekaplan](https://avatars.githubusercontent.com/u/810279?v=4)](https://github.com/moshekaplan "moshekaplan (1 commits)")[![schmidtsabine](https://avatars.githubusercontent.com/u/66960492?v=4)](https://github.com/schmidtsabine "schmidtsabine (1 commits)")[![bizmate](https://avatars.githubusercontent.com/u/1427498?v=4)](https://github.com/bizmate "bizmate (1 commits)")[![AleksanderKoko](https://avatars.githubusercontent.com/u/3903072?v=4)](https://github.com/AleksanderKoko "AleksanderKoko (1 commits)")

---

Tags

emailmanagernewsletterphplist

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/phplist-phplist4-core/health.svg)

```
[![Health](https://phpackages.com/badges/phplist-phplist4-core/health.svg)](https://phpackages.com/packages/phplist-phplist4-core)
```

###  Alternatives

[phplist/core

The core module of phpList, the world's most popular open source newsletter manager

885.2k3](/packages/phplist-core)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M647](/packages/sylius-sylius)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M151](/packages/sulu-sulu)

PHPackages © 2026

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