You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Simon Vieille 20767721a1 upgrade dependencies 1 year ago
bin Add initial set of files 3 years ago
config change encoding 2 years ago
private add documentation 3 years ago
public update logo 3 years ago
src add public feed 2 years ago
templates add public feed counter 2 years ago
.env add documentation 3 years ago
.gitignore security: add download action for attachments - refactor controllers (params) 3 years ago
.php-version upgrade dependencies 1 year ago upgrade dependencies 1 year ago
composer.json upgrade dependencies 1 year ago
symfony.lock upgrade dependencies 1 year ago

Mail RSS

This application allows you to transform emails into an RSS feed without connecting to a mailbox.



$ git clone
$ cd mail-rss
$ cp .env env.local
$ composer install

Populate .env.local:

  • APP_ENV: prod or dev
  • DATABASE_URL: read the documentation
  • APP_DEFAULT_URI: URI of the application (without trailing slash)

Be sure that the webserver can read/write private/, var/ and migrations/.

$ php bin/console -e dev doctrine:migrations:diff
$ php bin/console -e dev doctrine:migrations:exe --up DoctrineMigrations\\VersionXXXXXXXXXXXXX

And read the doc to publish a symfony app:


Use case: you want to create a feed of a newsletter named "Foo Bar".

$ sudo mkdir /var/lib/mailrss
$ sudo chmod 0770 /var/lib/mailrss
$ sudo chown you-web-user:nogroup

Add an alias into your mailserver:

# /etc/aliases
mailrss-foobar: "| > /var/lib/mailrss/foobar-$(date +%s) && chmod o+rw /var/lib/mailrss/foobar-$(date +%s)"

Then run $ sudo newaliases.

Add a mailing in the app:

$ php bin/console mailing:new "Fo Bar"

# Oops, you made a mistake in the label, let's fix it

$ php bin/console mailing:list
$ php bin/console mailing:rename xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx "Foo bar"

With php bin/console mailing:list --feed, you retrieve the URL of the feed.

In case of you want to delete the mailing:

$ php bin/console mailing:delete xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Finally, create a script run in a cron:


cd "/path/to/app"

find /var/lib/mailrss -name "foobar-*" | while read MAIL_FILE; do

	php bin/console mail:import "$MAILING_ID" -f "$MAIL_FILE" && rm "$MAIL_FILE"

You also can import a mail using stdin:

$ php bin/console mail:import "$MAILING_ID" < "$MAIL_FILE"
$ command | php bin/console mail:import "$MAILING_ID"

The feed can be published therefore accessible via the home page:

$ php bin/console mailing:publish xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

# php bin/console mailing:new "Foo bar" --public
# php bin/console mailing:new "Foo bar" -p

…and it can be private:

$ php bin/console mailing:unpublish xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

If you want to create another feed then:

  • Create an aliase
  • Create a mailing
  • Update your script run in the cron
  • Get the URI using mailing:list