You can not 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
12 months ago
bin Add initial set of files 2 years ago
config change encoding 2 years ago
private add documentation 2 years ago
public update logo 2 years ago
src add public feed 2 years ago
templates add public feed counter 2 years ago
.env add documentation 2 years ago
.gitignore security: add download action for attachments - refactor controllers (params) 2 years ago
.php-version upgrade dependencies 12 months ago
README.md upgrade dependencies 12 months ago
composer.json upgrade dependencies 12 months ago
symfony.lock upgrade dependencies 12 months ago

README.md

Mail RSS

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

Installation

Requirements:

$ 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

Usage

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:

#!/bin/sh

cd "/path/to/app"

find /var/lib/mailrss -name "foobar-*" | while read MAIL_FILE; do
	MAILING_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

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

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