fix: sending mail; add email host user and pwd for authentication

This commit is contained in:
2025-10-30 15:05:36 +01:00
parent 8ff3905657
commit 65ac5ae18e
4 changed files with 63 additions and 55 deletions

View File

@@ -96,6 +96,8 @@ docker build -t django-nginx-image -f nginx/Dockerfile ./nginx
### Start docker container ### Start docker container
Add email password for 'Verleih' account to EMAIL_HOST_PASSWORD in the docker compose file!
Build the docker containers: Build the docker containers:
```bash ```bash

View File

@@ -9,7 +9,7 @@ services:
depends_on: depends_on:
- django-homepage - django-homepage
volumes: volumes:
- files-volume:/usr/src/app/files - files-volume:/usr/src/app/files
- ./gallery:/usr/src/app/files/uploads/gallery - ./gallery:/usr/src/app/files/uploads/gallery
- ./assets:/usr/src/app/assets:ro - ./assets:/usr/src/app/assets:ro
networks: networks:
@@ -24,7 +24,9 @@ services:
SECRET_KEY: "sae34sADfrFr89E!Gl#f!34hdjGR#!jopi4qFEr#4R56rT56zT2#wE1!feGp" SECRET_KEY: "sae34sADfrFr89E!Gl#f!34hdjGR#!jopi4qFEr#4R56rT56zT2#wE1!feGp"
MYSQL_USER: "user" MYSQL_USER: "user"
MYSQL_PASSWORD: "hgu" MYSQL_PASSWORD: "hgu"
ETHERPAD_GROUP: "g.snlbqn7S6ksRbom3" ETHERPAD_GROUP: "g.snlbqn7S6ksRbom3"
EMAIL_HOST_USER: "verleih@fet.at"
EMAIL_HOST_PASSWORD: ""
depends_on: depends_on:
mysql: mysql:
condition: service_healthy condition: service_healthy

View File

@@ -18,6 +18,8 @@ env = environ.Env(
ETHERPAD_GROUP=(str, ""), ETHERPAD_GROUP=(str, ""),
GALLERY_PATH=(str, "uploads/gallery"), GALLERY_PATH=(str, "uploads/gallery"),
MC_MASTERPASSWORD=(str, ""), MC_MASTERPASSWORD=(str, ""),
EMAIL_HOST_USER=(str, ""),
EMAIL_HOST_PASSWORD=(str, ""),
) )
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
@@ -103,6 +105,8 @@ else:
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "buran.htu.tuwien.ac.at" EMAIL_HOST = "buran.htu.tuwien.ac.at"
EMAIL_PORT = 587 EMAIL_PORT = 587
EMAIL_HOST_USER = env("EMAIL_HOST_USER")
EMAIL_HOST_PASSWORD = env("EMAIL_HOST_PASSWORD")
EMAIL_USE_TLS = True EMAIL_USE_TLS = True

View File

@@ -1,53 +1,53 @@
import logging import logging
from django.core.mail import EmailMessage from django.conf import settings
from django.core.mail import EmailMessage
RENTAL_EMAIL = "verleih@fet.at"
logger = logging.getLogger(__name__) RENTAL_EMAIL = settings.EMAIL_HOST_USER
logger = logging.getLogger(__name__)
def send_mail_approved(obj):
subject = f"FET-Verleih #{obj.id}: {obj.get_status_display()}" def send_mail_approved(obj):
subject = f"FET-Verleih #{obj.id}: {obj.get_status_display()}"
total_deposit = 0 total_deposit = obj.calc_total_deposit()
for rentalitem in obj.rentalitems.all():
total_deposit += rentalitem.deposit message = (
f"Hallo {obj.firstname},\n\n"
message = ( f"deine Verleihanfrage mit der Nummer #{obj.id} wurde erfolgreich genehmigt. Die "
f"Hallo {obj.firstname},\n" f"Gegenstände können am {obj.date_start.strftime('%d.%m.%Y')} während der Beratungszeit "
f"deine Verleihanfrage mit der Nummer #{obj.id} wurde erfolgreich genehmigt. Die " "(Montag - Donnerstag: 09:00 - 14:00, Freitag: 09:00 - 12:00) abgeholt werden.\n"
f"Gegenstände können am {obj.date_start.strftime('%d.%m.%Y')} während der Beratungszeit " )
"(Montag - Donnerstag: 09:00 - 14:00, Freitag: 09:00 - 12:00) abgeholt werden. Bitte bring "
f"den Gesamtpfand in Höhe von {total_deposit} € in bar mit.\n" if total_deposit > 0:
"Liebe Grüße,\n" message += f"Bitte bring den Gesamtpfand in Höhe von {total_deposit} € in bar mit.\n"
"das Verleih-Team"
) message += "\nLiebe Grüße,\ndas Verleih-Team"
email = EmailMessage( email = EmailMessage(
subject, message, from_email=RENTAL_EMAIL, to=[obj.email], cc=[RENTAL_EMAIL] subject, message, from_email=RENTAL_EMAIL, to=[obj.email], cc=[RENTAL_EMAIL]
) )
try: try:
email.send() email.send()
except Exception as exc: except Exception as exc:
logger.error("Failed to send approval email for rental #%s. Error: %s", obj.id, exc) logger.info("Failed to send approval email for rental #%s. Error: %s", obj.id, exc)
def send_mail_rejected(obj): def send_mail_rejected(obj):
subject = f"FET-Verleih #{obj.id}: {obj.get_status_display()}" subject = f"FET-Verleih #{obj.id}: {obj.get_status_display()}"
message = ( message = (
f"Hallo {obj.firstname},\n" f"Hallo {obj.firstname},\n\n"
f"deine Verleihanfrage mit der Nummer #{obj.id} wurde abgelehnt.\n" f"deine Verleihanfrage mit der Nummer #{obj.id} wurde abgelehnt.\n\n"
"Liebe Grüße,\n" "Liebe Grüße,\n"
"das Verleih-Team" "das Verleih-Team"
) )
email = EmailMessage( email = EmailMessage(
subject, message, from_email=RENTAL_EMAIL, to=[obj.email], cc=[RENTAL_EMAIL] subject, message, from_email=RENTAL_EMAIL, to=[obj.email], cc=[RENTAL_EMAIL]
) )
try: try:
email.send() email.send()
except Exception as exc: except Exception as exc:
logger.error("Failed to send rejection email for rental #%s. Error: %s", obj.id, exc) logger.info("Failed to send rejection email for rental #%s. Error: %s", obj.id, exc)