55 lines
2.1 KiB
Python
55 lines
2.1 KiB
Python
import logging
|
|
from decimal import Decimal
|
|
from email.message import EmailMessage
|
|
from asyncio import sleep
|
|
|
|
import aiosmtplib
|
|
|
|
from src.ezgg_lan_manager.services.ConfigurationService import ConfigurationService
|
|
from src.ezgg_lan_manager.types.User import User
|
|
|
|
logger = logging.getLogger(__name__.split(".")[-1])
|
|
|
|
class MailingService:
|
|
def __init__(self, configuration_service: ConfigurationService):
|
|
self._configuration_service = configuration_service
|
|
self._config = self._configuration_service.get_mailing_service_configuration()
|
|
|
|
async def send_email(self, subject: str, body: str, receiver: str) -> None:
|
|
if self._configuration_service.DEV_MODE_ACTIVE:
|
|
logger.info(f"Skipped sending mail to {receiver} because demo mode is active.")
|
|
logger.info(f"Subject: {subject}")
|
|
logger.info(f"Receiver: {receiver}")
|
|
logger.info(f"Body: {body}")
|
|
await sleep(1)
|
|
return
|
|
|
|
try:
|
|
message = EmailMessage()
|
|
message["From"] = self._config.sender
|
|
message["To"] = receiver
|
|
message["Subject"] = subject
|
|
message.set_content(body)
|
|
|
|
await aiosmtplib.send(
|
|
message,
|
|
hostname=self._config.smtp_server,
|
|
port=self._config.smtp_port,
|
|
username=self._config.username,
|
|
password=self._config.password
|
|
)
|
|
except Exception as e:
|
|
logger.error(f"Failed to send email: {e}")
|
|
|
|
def generate_account_balance_added_mail_body(self, user: User, added_balance: Decimal, total_balance: Decimal) -> str:
|
|
return f"""
|
|
Hallo {user.user_name},
|
|
|
|
deinem Account wurden {added_balance:.2f} € hinzugefügt. Dein neues Guthaben beträgt nun {total_balance:.2f} €.
|
|
|
|
Wenn du zu dieser Aufladung Fragen hast, stehen wir dir in unserem Discord Server oder per Mail an {self._configuration_service.get_lan_info().organizer_mail} zur Verfügung.
|
|
|
|
Liebe Grüße
|
|
Dein {self._configuration_service.get_lan_info().name} Team
|
|
"""
|