Go to file
Simon Vieille 20767721a1 upgrade dependencies 2022-02-16 19:10:14 +01:00
bin Add initial set of files 2020-11-11 13:17:58 +01:00
config change encoding 2020-12-21 15:00:31 +01:00
private add documentation 2020-11-12 16:17:33 +01:00
public update logo 2020-11-11 22:36:36 +01:00
src add public feed 2020-12-21 17:44:08 +01:00
templates add public feed counter 2020-12-21 20:23:04 +01:00
.env add documentation 2020-11-12 16:17:33 +01:00
.gitignore security: add download action for attachments - refactor controllers (params) 2020-11-11 19:48:16 +01:00
.php-version upgrade dependencies 2022-02-16 19:10:14 +01:00
README.md upgrade dependencies 2022-02-16 19:10:14 +01:00
composer.json upgrade dependencies 2022-02-16 19:10:14 +01:00
symfony.lock upgrade dependencies 2022-02-16 19:10:14 +01:00


Mail RSS

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



$ git clone https://gitnet.fr/deblan/mail-rss.git
$ 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: https://symfony.com/doc/5.3/deployment.html


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