101 lines
4.3 KiB
Python
101 lines
4.3 KiB
Python
import os
|
|
from django.template.loader import render_to_string
|
|
from django.conf import settings
|
|
import logging
|
|
from django.core.mail import send_mail
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
def load_email_template(template_name, context):
|
|
template_path = os.path.join('email', template_name)
|
|
email_content = render_to_string(template_path, context)
|
|
|
|
# 件名と本文を分離
|
|
subject, _, body = email_content.partition('\n\n')
|
|
subject = subject.replace('件名: ', '').strip()
|
|
|
|
return subject, body
|
|
|
|
# 既にユーザーになっている人にチームへの参加要請メールを出す。
|
|
#
|
|
def send_team_join_email(sender,user,team,entry,activation_link):
|
|
context = {
|
|
'name': user.firstname or user.email,
|
|
'activation_link': activation_link,
|
|
'app_download_link': settings.APP_DOWNLOAD_LINK,
|
|
'service_name': settings.SERVICE_NAME,
|
|
}
|
|
|
|
subject, body = load_email_template('activation_email.txt', context)
|
|
|
|
try:
|
|
send_mail(subject, body, settings.DEFAULT_FROM_EMAIL, [user.email], fail_silently=False)
|
|
logger.info(f"チームへの参加承認メールを送信しました。 受信者: {user.email}")
|
|
except Exception as e:
|
|
logger.error(f"チームへの参加承認メールの送信に失敗しました。 受信者: {user.email}, エラー: {str(e)}")
|
|
raise # エラーを再度発生させて、呼び出し元で処理できるようにします
|
|
|
|
# 自らユーザー登録した際に、メールの確認メールを送る。
|
|
#
|
|
def send_verification_email(user, activation_link):
|
|
context = {
|
|
'name': user.firstname or user.email,
|
|
'activation_link': activation_link,
|
|
'app_download_link': settings.APP_DOWNLOAD_LINK,
|
|
'service_name': settings.SERVICE_NAME,
|
|
}
|
|
|
|
subject, body = load_email_template('verification_email.txt', context)
|
|
|
|
logger.info(f"subject: {subject}")
|
|
logger.info(f"body: {body}")
|
|
|
|
try:
|
|
send_mail(subject, body, settings.DEFAULT_FROM_EMAIL, [user.email], fail_silently=False)
|
|
logger.info(f"アクティベーションメールを送信しました。 受信者: {user.email}")
|
|
except Exception as e:
|
|
logger.error(f"アクティベーションメールの送信に失敗しました。 受信者: {user.email}, エラー: {str(e)}")
|
|
raise # エラーを再度発生させて、呼び出し元で処理できるようにします
|
|
|
|
|
|
# まだユーザーでない人にチームメンバー招待メールを送る
|
|
# その人がユーザー登録して、ユーザー登録されるとメンバーになる。
|
|
# アプリからユーザー登録するため、アプリのダウンロードリンクも送る。
|
|
#
|
|
def send_invitation_email(sender,user,team,entry,activation_link):
|
|
context = {
|
|
'name': user.firstname or user.email,
|
|
'invitaion_link': activation_link,
|
|
'app_download_link': settings.APP_DOWNLOAD_LINK,
|
|
'service_name': settings.SERVICE_NAME,
|
|
}
|
|
|
|
subject, body = load_email_template('invitaion_email.txt', context)
|
|
|
|
try:
|
|
send_mail(subject, body, settings.DEFAULT_FROM_EMAIL, [user.email], fail_silently=False)
|
|
logger.info(f"招待メールを送信しました。 受信者: {user.email}")
|
|
except Exception as e:
|
|
logger.error(f"招待メールの送信に失敗しました。 受信者: {user.email}, エラー: {str(e)}")
|
|
raise # エラーを再度発生させて、呼び出し元で処理できるようにします
|
|
|
|
# エントリーしたら、その内容をメンバーに送信する。
|
|
#
|
|
def send_entry_email(sender,user,team,entry,activation_link):
|
|
context = {
|
|
'name': user.firstname or user.email,
|
|
'invitaion_link': activation_link,
|
|
'app_download_link': settings.APP_DOWNLOAD_LINK,
|
|
'service_name': settings.SERVICE_NAME,
|
|
}
|
|
|
|
subject, body = load_email_template('invitaion_email.txt', context)
|
|
|
|
try:
|
|
send_mail(subject, body, settings.DEFAULT_FROM_EMAIL, [user.email], fail_silently=False)
|
|
logger.info(f"エントリーメールを送信しました。 受信者: {user.email}")
|
|
except Exception as e:
|
|
logger.error(f"エントリーメールの送信に失敗しました。 受信者: {user.email}, エラー: {str(e)}")
|
|
raise # エラーを再度発生させて、呼び出し元で処理できるようにします
|
|
|