mirror of
https://github.com/draga79/NotiMail.git
synced 2024-11-12 16:51:34 +01:00
Added Apprise support - tons of notification providers are now supported!
This commit is contained in:
parent
eef362f907
commit
6765287e70
4 changed files with 53 additions and 5 deletions
17
CHANGELOG.md
17
CHANGELOG.md
|
@ -1,3 +1,20 @@
|
|||
### Version 0.13
|
||||
|
||||
#### New Features:
|
||||
|
||||
- **Apprise Notification Support**: Introduced the `AppriseNotificationProvider` to allow for notifications through a variety of services via the Apprise library.
|
||||
|
||||
#### Changes:
|
||||
|
||||
- Added an import statement for the `apprise` library to the script to facilitate the new notification method.
|
||||
- Updated the `multi_account_main` function to read Apprise configuration from `config.ini` and initialize the `AppriseNotificationProvider`.
|
||||
- The notification dispatch process within the script now includes the capability to use Apprise, broadening the range of supported notification services.
|
||||
|
||||
#### Upgrade Notes:
|
||||
|
||||
- To use Apprise, ensure that the `apprise` package is installed (`pip install apprise`).
|
||||
- Update the `config.ini` file to include a new section `[APPRISE]` with the required service URLs for notifications.
|
||||
|
||||
### Version 0.12.1
|
||||
|
||||
#### Changes:
|
||||
|
|
30
NotiMail.py
30
NotiMail.py
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
NotiMail
|
||||
Version: 0.12.1
|
||||
Version: 0.13
|
||||
Author: Stefano Marinelli <stefano@dragas.it>
|
||||
License: BSD 3-Clause License
|
||||
|
||||
|
@ -27,6 +27,7 @@ Python Dependencies:
|
|||
- signal, sys: For handling script shutdown and signals.
|
||||
- threading: to deal with multiple inboxes
|
||||
- BytesParser from email.parser: For parsing raw email data.
|
||||
- apprise: for apprise notifications
|
||||
|
||||
Configuration:
|
||||
The script reads configuration data from a file named config.ini. Ensure it is properly
|
||||
|
@ -74,6 +75,7 @@ import sys
|
|||
import logging
|
||||
import argparse
|
||||
import threading
|
||||
import apprise
|
||||
from email import policy
|
||||
from email.parser import BytesParser
|
||||
|
||||
|
@ -184,6 +186,27 @@ class NotificationProvider:
|
|||
def send_notification(self, mail_from, mail_subject):
|
||||
raise NotImplementedError("Subclasses must implement this method")
|
||||
|
||||
class AppriseNotificationProvider(NotificationProvider):
|
||||
def __init__(self, apprise_config):
|
||||
# Initialize the apprise object
|
||||
self.apprise = apprise.Apprise()
|
||||
# Add all the services by the configuration provided
|
||||
for service_url in apprise_config:
|
||||
self.apprise.add(service_url)
|
||||
|
||||
def send_notification(self, mail_from, mail_subject):
|
||||
# Prepare the notification message
|
||||
mail_subject = mail_subject if mail_subject is not None else "No Subject"
|
||||
mail_from = mail_from if mail_from is not None else "Unknown Sender"
|
||||
message = f"{mail_from}"
|
||||
|
||||
# Send the notification
|
||||
if not self.apprise.notify(title=mail_subject, body=message):
|
||||
# If notification fails, log the failure
|
||||
logging.error(f"Failed to send notification via Apprise.")
|
||||
print(f"Failed to send notification via Apprise.")
|
||||
|
||||
|
||||
class NTFYNotificationProvider(NotificationProvider):
|
||||
def __init__(self, ntfy_data):
|
||||
#self.ntfy_urls = ntfy_urls # Expecting a list of URLs
|
||||
|
@ -427,6 +450,11 @@ def multi_account_main():
|
|||
|
||||
providers = []
|
||||
|
||||
if 'APPRISE' in config:
|
||||
apprise_urls = config['APPRISE']['urls'].split(',') # Assuming urls is a comma-separated list in the config
|
||||
providers.append(AppriseNotificationProvider(apprise_urls))
|
||||
|
||||
|
||||
if 'NTFY' in config:
|
||||
ntfy_data = []
|
||||
for key in config['NTFY']:
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
# NotiMail 📧
|
||||
|
||||
**Version 0.12.1 is here, read the changelog for more information!**
|
||||
|
||||
**Development is ongoing, and the project is in the early alpha stage - things may break!**
|
||||
**Version 0.13 is here, read the changelog for more information!**
|
||||
|
||||
Stay connected without the constant drain on your battery. Introducing **NotiMail** - the future of server-side email notifications supporting multiple push providers and multiple email accounts!
|
||||
|
||||
|
@ -18,11 +16,13 @@ Mobile devices often use IMAP IDLE, maintaining a persistent connection to ensur
|
|||
|
||||
- **Leverages Multiple Push Providers for Alerts**: Rather than having your device always on alert, NotiMail sends notifications via multiple push providers, ensuring you're promptly informed.
|
||||
|
||||
- **Expanded Notification Capabilities**: Version 0.13 introduces support for Apprise, allowing for an extensive array of notification services through a single interface.
|
||||
|
||||
- **Database Integration**: NotiMail uses an SQLite3 database to store and manage processed email UIDs, preventing repeated processing.
|
||||
|
||||
- **Built for Resilience**: With connectivity hiccups in mind, NotiMail ensures you're always the first to know.
|
||||
|
||||
- **Multiple And Different Push providers supported**: You can use one or more of the supported Push providers - all support authentication, which currently include ntfy, Gotify, and Pushover.
|
||||
- **Multiple And Different Push providers supported**: You can use one or more of the supported Push providers - all support authentication, which now includes ntfy, Gotify, Pushover, and a wide range through Apprise.
|
||||
|
||||
## Benefits 🚀
|
||||
|
||||
|
|
|
@ -31,3 +31,6 @@ Host = mail.server.com
|
|||
#Url = https://gotify.example.com/message
|
||||
#Token = your_gotify_token
|
||||
|
||||
#If your provider is one of the ones supported by APPRISE, uncomment the following lines and configure. If using APPRISE, also uncomment the [APPRISE] line
|
||||
#[APPRISE]
|
||||
#urls = pover://user@token, discord://webhook_id/webhook_token
|
||||
|
|
Loading…
Reference in a new issue