Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jibbarth/slacknewsletter
A Symfony Project to build a newsletter from slack workspace.
https://github.com/jibbarth/slacknewsletter
github-template newsletter newsletter-service php slack slackbuilds symfony symfony5
Last synced: 24 days ago
JSON representation
A Symfony Project to build a newsletter from slack workspace.
- Host: GitHub
- URL: https://github.com/jibbarth/slacknewsletter
- Owner: Jibbarth
- Created: 2018-04-15T17:18:26.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-07-16T19:52:32.000Z (over 1 year ago)
- Last Synced: 2024-05-12T20:48:46.389Z (6 months ago)
- Topics: github-template, newsletter, newsletter-service, php, slack, slackbuilds, symfony, symfony5
- Language: PHP
- Size: 689 KB
- Stars: 7
- Watchers: 4
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Slack Newsletter
![CI](https://github.com/Jibbarth/slacknewsletter/workflows/CI/badge.svg?branch=master)
![Version](https://img.shields.io/packagist/v/barth/slacknewsletter)This application allows you to generate a newsletter from your [Slack](https://slack.com) channels.
It goes through the channels looking for links, combines them into a html file, and sends it by email.
It's ideal for keeping track of your finds when the historical Slack reaches its limit.## Installation & Configuration
1. Clone the project and launch `composer install` inside.
2. Generate a [Token on your slack workspace](https://github.com/Jibbarth/slacknewsletter/wiki/Generate-an-App-to-get-a-Token)
3. In your `.env.local`, complete your smtp configuration, the receivers, and your Slack token like that :
```
MAILER_DSN=smtp://awesome-smtp:25
[email protected],[email protected]
SLACK_TOKEN=xoxp-XXXXXXXXX-XXXXXXX-XXXXXXXXX
```4. Choose your channels to browse and add them in `config/channels.json`.
You can check out the `config/channels.json.dist` to see how add a new channels5. (OPTIONNAL) : Pimp your newsletter by altering parameters in `config/package/parameters.yaml`
6. Configure your cron to execute command to browse, build, and send newsletter.
For example :
```bash
## Every day at 8am, browse channels and store them
0 8 * * * php bin/console app:newsletter:browse
## Every monday at 8:05 am, build the newsletter and send it
5 8 * * 1 php bin/console app:newsletter:build && php bin/console app:newsletter:send
```## Build With
* [Symfony 5.2](http://symfony.com/)
* symfony/console
* symfony/mailer
* symfony/yaml
* [FlySystem from The Php League](http://flysystem.thephpleague.com/)
* [jolicode/slack-php-api](https://github.com/jolicode/slack-php-api)
* [Embed](https://github.com/oscarotero/Embed)
* [Carbon](https://carbon.nesbot.com/)Thank to theirs awesome work.
## Customize the newsletter
If you want to customize the newsletter, all templates are in `templates` folder.
Before testing rendering, you have to retrieve some messages :
```bash
php bin/console app:newsletter:browse -d 5
```
> The `-d` or `--days` is to specified how many days to retrieve.
You can have lots of data by this way.To test the view in web-browser, launch a web server :
```bash
symfony local:server:start -d # With Symfony CLI binary
php -S localhost:8000 -t public # Using php built-in web-server
```
and go to [http://127.0.0.1:8000/test/mail](http://127.0.0.1:8000/test/mail)But you probably have to send emails to test compatibility with emails viewer.
You can launch theses commands to avoid archivation of messages and builded news.
```bash
php bin/console app:newsletter:build --no-archive
php bin/console app:newsletter:send --no-archive
```## Contribute
First of all, thank you for contributing ♥
If you find any typo/misconfiguration/... please send a PR or open an issue.
Also, while creating your PR, please write a description which gives the context and/or explains why you are creating it.
## TODOs
- [x] Make installation as simple as a `composer create-project barth/slacknewsletter`
- [x] Browse private channel
- [x] Make sure it'll work with [Slack App](https://api.slack.com/apps) and provide a configuration guide
- [ ] Write Tests Suite
- [ ] Add translations
- [ ] Easily extend with other Team Collaboration Software (Discord, HipChat...)