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 4d6a0a7539
update documentation
1 month ago
bin Add initial set of files 2 months ago
config change encoding 1 month ago
private add documentation 2 months ago
public update logo 2 months ago
src add public feed 1 month ago
templates add public feed counter 1 month ago
.env add documentation 2 months ago
.gitignore security: add download action for attachments - refactor controllers (params) 2 months ago
.php-version add importation mails and views 2 months ago
README.md update documentation 1 month ago
composer.json add importation mails and views 2 months ago
symfony.lock add importation mails and views 2 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