Mailjet
This commit is contained in:
@@ -6,7 +6,6 @@ from django.views.decorators.csrf import ensure_csrf_cookie
|
|||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.contrib.auth.decorators import permission_required, login_required
|
from django.contrib.auth.decorators import permission_required, login_required
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.mail import send_mail
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import requests
|
import requests
|
||||||
|
|||||||
+3
-3
@@ -11,7 +11,7 @@ import logging
|
|||||||
from smtplib import SMTPAuthenticationError
|
from smtplib import SMTPAuthenticationError
|
||||||
|
|
||||||
from members.models import Member, Request
|
from members.models import Member, Request
|
||||||
from members.views.utils import send_mail_wrapper
|
from webapp.utils import send_email
|
||||||
|
|
||||||
|
|
||||||
@receiver(post_save, sender=Request)
|
@receiver(post_save, sender=Request)
|
||||||
@@ -24,7 +24,7 @@ def email_on_request(sender, instance, created, **kwargs):
|
|||||||
if created:
|
if created:
|
||||||
subject = 'Test1'
|
subject = 'Test1'
|
||||||
message = 'Please validate your email address\r\n'
|
message = 'Please validate your email address\r\n'
|
||||||
send_mail_wrapper(subject, message, instance.email)
|
send_email(instance.email, subject, message)
|
||||||
except SMTPAuthenticationError:
|
except SMTPAuthenticationError:
|
||||||
logging.error('Failed to send email to accepted request!')
|
logging.error('Failed to send email to accepted request!')
|
||||||
|
|
||||||
@@ -39,6 +39,6 @@ def email_on_accept(sender, instance, created, **kwargs):
|
|||||||
if created:
|
if created:
|
||||||
subject = 'Test2'
|
subject = 'Test2'
|
||||||
message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n'
|
message = 'Jäsenhakemuksesi on hyväksytty!!!\r\n'
|
||||||
send_mail_wrapper(subject, message, instance.email)
|
send_email(instance.email, subject, message)
|
||||||
except SMTPAuthenticationError:
|
except SMTPAuthenticationError:
|
||||||
logging.error('Failed to send email to accepted member!')
|
logging.error('Failed to send email to accepted member!')
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ from django.contrib.auth.decorators import permission_required, login_required
|
|||||||
from django.views.decorators.http import require_http_methods
|
from django.views.decorators.http import require_http_methods
|
||||||
from django.views.decorators.csrf import ensure_csrf_cookie
|
from django.views.decorators.csrf import ensure_csrf_cookie
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.core.mail import send_mail
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
from django.forms.models import model_to_dict
|
from django.forms.models import model_to_dict
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ from django.utils.decorators import method_decorator
|
|||||||
from django.views.decorators.http import require_http_methods
|
from django.views.decorators.http import require_http_methods
|
||||||
from django.views.decorators.csrf import ensure_csrf_cookie
|
from django.views.decorators.csrf import ensure_csrf_cookie
|
||||||
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse, HttpResponseForbidden
|
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse, HttpResponseForbidden
|
||||||
from django.core.mail import send_mail
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
from django.forms.models import model_to_dict
|
from django.forms.models import model_to_dict
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ from django.contrib.auth.decorators import permission_required, login_required
|
|||||||
from django.views.decorators.http import require_http_methods
|
from django.views.decorators.http import require_http_methods
|
||||||
from django.views.decorators.csrf import ensure_csrf_cookie
|
from django.views.decorators.csrf import ensure_csrf_cookie
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.core.mail import send_mail
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
from django.forms.models import model_to_dict
|
from django.forms.models import model_to_dict
|
||||||
|
|||||||
+1
-10
@@ -3,7 +3,7 @@ from django.contrib.auth.decorators import permission_required, login_required
|
|||||||
from django.views.decorators.http import require_http_methods
|
from django.views.decorators.http import require_http_methods
|
||||||
from django.views.decorators.csrf import ensure_csrf_cookie
|
from django.views.decorators.csrf import ensure_csrf_cookie
|
||||||
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseBadRequest
|
from django.http import HttpResponse, HttpResponseRedirect, HttpResponseBadRequest
|
||||||
from django.core.mail import send_mail
|
from webapp.utils import send_email
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
from django.forms.models import model_to_dict
|
from django.forms.models import model_to_dict
|
||||||
@@ -145,15 +145,6 @@ def import_csv(request, *args, **kwargs):
|
|||||||
return render(request, 'member_add_many_confirm.html', context)
|
return render(request, 'member_add_many_confirm.html', context)
|
||||||
|
|
||||||
|
|
||||||
def send_mail_wrapper(subject, message, email_to):
|
|
||||||
"""Send mail to default email."""
|
|
||||||
send_mail(subject,
|
|
||||||
message,
|
|
||||||
settings.DEFAULT_EMAIL_FROM,
|
|
||||||
[email_to],
|
|
||||||
fail_silently=False)
|
|
||||||
|
|
||||||
|
|
||||||
def make_excel_response(Resource):
|
def make_excel_response(Resource):
|
||||||
res = Resource()
|
res = Resource()
|
||||||
dataset = res.export()
|
dataset = res.export()
|
||||||
|
|||||||
+2
-1
@@ -29,7 +29,7 @@ django-auditlog==0.4.5
|
|||||||
phonenumbers==8.11.4
|
phonenumbers==8.11.4
|
||||||
django-phonenumber-field[phonenumbers]==4.0.0
|
django-phonenumber-field[phonenumbers]==4.0.0
|
||||||
django-autocomplete-light==3.4.1
|
django-autocomplete-light==3.4.1
|
||||||
six==1.11.0
|
six==1.12.0
|
||||||
django-suit==0.2.26
|
django-suit==0.2.26
|
||||||
telepot==12.3
|
telepot==12.3
|
||||||
pyexcel==0.5.14
|
pyexcel==0.5.14
|
||||||
@@ -40,3 +40,4 @@ django-app-namespace-template-loader==0.4.1
|
|||||||
django-filter==2.0.0
|
django-filter==2.0.0
|
||||||
whitenoise==4.1.4
|
whitenoise==4.1.4
|
||||||
jsonschema==3.2.0
|
jsonschema==3.2.0
|
||||||
|
mailjet-rest==1.3.3
|
||||||
|
|||||||
+4
-3
@@ -30,9 +30,10 @@ GOOGLE_RECAPTCHA_SITE_KEY = os.getenv("GOOGLE_RECAPTCHA_SITE_KEY", "YOUR-PUBLIC-
|
|||||||
GOOGLE_RECAPTCHA_SECRET_KEY = os.getenv("GOOGLE_RECAPTCHA_SECRET_KEY", "YOUR-PRIVATE-KEY")
|
GOOGLE_RECAPTCHA_SECRET_KEY = os.getenv("GOOGLE_RECAPTCHA_SECRET_KEY", "YOUR-PRIVATE-KEY")
|
||||||
|
|
||||||
# Email settings (more settings in base.py)
|
# Email settings (more settings in base.py)
|
||||||
EMAIL_HOST_USER = os.getenv('EMAIL_HOST', 'sikviestinta@gmail.com')
|
EMAIL_API_KEY = os.getenv('EMAIL_API_KEY', '')
|
||||||
EMAIL_HOST_PASSWORD = os.getenv('EMAIL_PASSWD', '<gmail_passu>')
|
EMAIL_API_SECRET = os.getenv('EMAIL_API_SECRET', '')
|
||||||
DEFAULT_EMAIL_FROM = 'SIK Viestintä <sikviestinta@gmail.com>'
|
DEFAULT_EMAIL_FROM = 'SIK'
|
||||||
|
DEFAULT_EMAIL_FROM_ADDR = 'noreply@sahkoinsinoorikilta.fi'
|
||||||
ENABLE_AUTOMATIC_EMAILS = True
|
ENABLE_AUTOMATIC_EMAILS = True
|
||||||
|
|
||||||
# Token for Telegram bot
|
# Token for Telegram bot
|
||||||
|
|||||||
@@ -29,6 +29,20 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- HOST=api.dev.sik.party
|
- HOST=api.dev.sik.party
|
||||||
- DEBUG=True
|
- DEBUG=True
|
||||||
|
- EMAIL_API_KEY_FILE=/run/secrets/DJANGO_EMAIL_API_KEY
|
||||||
|
- EMAIL_API_SECRET_FILE=/run/secrets/DJANGO_EMAIL_API_SECRET
|
||||||
|
- DB_HOST=db
|
||||||
|
- DB_PORT=5432
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
- DJANGO_EMAIL_API_KEY
|
||||||
|
- DJANGO_EMAIL_API_SECRET
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
DJANGO_EMAIL_API_KEY:
|
||||||
|
external: true
|
||||||
|
DJANGO_EMAIL_API_SECRET:
|
||||||
|
external: true
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
dbdata:
|
dbdata:
|
||||||
|
|||||||
+31
-11
@@ -1,13 +1,15 @@
|
|||||||
"""Webapp utils."""
|
"""Webapp utils."""
|
||||||
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.core.mail import send_mail
|
# from django.core.mail import send_mail
|
||||||
|
import os
|
||||||
|
from mailjet_rest import Client
|
||||||
|
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import logging
|
import logging
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.template.loader import render_to_string
|
from django.template.loader import render_to_string
|
||||||
from sikweb.settings import URL
|
from sikweb.settings import URL, EMAIL_API_KEY, EMAIL_API_SECRET, DEFAULT_EMAIL_FROM, DEFAULT_EMAIL_FROM_ADDR
|
||||||
|
|
||||||
|
|
||||||
def month_from_now():
|
def month_from_now():
|
||||||
@@ -17,18 +19,36 @@ def month_from_now():
|
|||||||
|
|
||||||
def send_email(to, subject, body, fail_silently=False):
|
def send_email(to, subject, body, fail_silently=False):
|
||||||
try:
|
try:
|
||||||
success = send_mail(
|
mailjet = Client(auth=(EMAIL_API_KEY, EMAIL_API_SECRET), version='v3.1')
|
||||||
subject,
|
|
||||||
body,
|
data = {
|
||||||
settings.DEFAULT_EMAIL_FROM,
|
'Messages': [
|
||||||
[to],
|
{
|
||||||
fail_silently=fail_silently,
|
"From": {
|
||||||
)
|
"Email": DEFAULT_EMAIL_FROM_ADDR,
|
||||||
if success == 0:
|
"Name": DEFAULT_EMAIL_FROM
|
||||||
raise Exception('Failed to send email!')
|
},
|
||||||
|
"To": [
|
||||||
|
{
|
||||||
|
"Email": to,
|
||||||
|
"Name": "You"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Subject": subject,
|
||||||
|
# "TextPart": "Greetings from Mailjet!",
|
||||||
|
"HTMLPart": body
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
success = mailjet.send.create(data=data)
|
||||||
|
|
||||||
|
if success.status_code != 201:
|
||||||
|
raise Exception(f'Failed to send email: {success.json()}')
|
||||||
|
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
logging.exception('Failed to send email.')
|
logging.exception('Failed to send email.')
|
||||||
|
logging.debug(EMAIL_API_KEY)
|
||||||
|
logging.debug(EMAIL_API_SECRET)
|
||||||
|
|
||||||
|
|
||||||
def send_signup_email(to, subject, id, uuid):
|
def send_signup_email(to, subject, id, uuid):
|
||||||
|
|||||||
Reference in New Issue
Block a user