feat: added email template customization option for welcome and password reset emails

This commit is contained in:
Yash Jane 2023-05-25 13:19:07 +05:30
parent c5e62cac26
commit 76d7e6e379
2 changed files with 32 additions and 5 deletions

View file

@ -72,6 +72,8 @@
"disable_standard_email_footer",
"hide_footer_in_auto_email_reports",
"attach_view_link",
"welcome_email_template",
"reset_password_template",
"prepared_report_section",
"max_auto_email_report_per_user",
"system_updates_section",
@ -549,12 +551,24 @@
"fieldname": "enable_telemetry",
"fieldtype": "Check",
"label": "Allow Sending Usage Data for Improving Applications"
},
{
"fieldname": "welcome_email_template",
"fieldtype": "Link",
"label": "Welcome Email Template",
"options": "Email Template"
},
{
"fieldname": "reset_password_template",
"fieldtype": "Link",
"label": "Reset Password Template",
"options": "Email Template"
}
],
"icon": "fa fa-cog",
"issingle": 1,
"links": [],
"modified": "2023-04-23 11:14:59.302851",
"modified": "2023-05-25 13:02:54.808773",
"modified_by": "Administrator",
"module": "Core",
"name": "System Settings",

View file

@ -325,7 +325,10 @@ class User(Document):
return (self.first_name or "") + (self.first_name and " " or "") + (self.last_name or "")
def password_reset_mail(self, link):
self.send_login_mail(_("Password Reset"), "password_reset", {"link": link}, now=True)
reset_password_template = frappe.db.get_system_setting("reset_password_template")
self.send_login_mail(_("Password Reset"), "password_reset", {"link": link}, now=True, custom_template=reset_password_template)
def send_welcome_mail_to_user(self):
from frappe.utils import get_url
@ -342,16 +345,19 @@ class User(Document):
else:
subject = _("Complete Registration")
welcome_email_template = frappe.db.get_system_setting("welcome_email_template")
self.send_login_mail(
subject,
"new_user",
dict(
dict(
link=link,
site_url=get_url(),
),
custom_template=welcome_email_template,
)
def send_login_mail(self, subject, template, add_args, now=None):
def send_login_mail(self, subject, template, add_args, now=None, custom_template=None):
"""send mail with login details"""
from frappe.utils import get_url
from frappe.utils.user import get_user_fullname
@ -374,11 +380,18 @@ class User(Document):
frappe.session.user not in STANDARD_USERS and get_formatted_email(frappe.session.user) or None
)
if custom_template:
from frappe.email.doctype.email_template.email_template import get_email_template
email_template = get_email_template(custom_template, args)
subject = email_template.get("subject")
content = email_template.get("message")
frappe.sendmail(
recipients=self.email,
sender=sender,
subject=subject,
template=template,
template=template if not custom_template else None,
content=content if custom_template else None,
args=args,
header=[subject, "green"],
delayed=(not now) if now is not None else self.flags.delay_emails,