remove the "Hi {name}" from email template
This commit is contained in:
parent
c9c2190874
commit
ef7fae32b1
|
@ -318,7 +318,7 @@ def auth_google():
|
||||||
|
|
||||||
|
|
||||||
def auth_payload(user, device) -> dict:
|
def auth_payload(user, device) -> dict:
|
||||||
ret = {"name": user.name, "email": user.email, "mfa_enabled": user.enable_otp}
|
ret = {"name": user.name or "", "email": user.email, "mfa_enabled": user.enable_otp}
|
||||||
|
|
||||||
# do not give api_key, user can only obtain api_key after OTP verification
|
# do not give api_key, user can only obtain api_key after OTP verification
|
||||||
if user.enable_otp:
|
if user.enable_otp:
|
||||||
|
|
|
@ -55,7 +55,7 @@ def auth_mfa():
|
||||||
if not totp.verify(mfa_token):
|
if not totp.verify(mfa_token):
|
||||||
return jsonify(error="Wrong TOTP Token"), 400
|
return jsonify(error="Wrong TOTP Token"), 400
|
||||||
|
|
||||||
ret = {"name": user.name, "email": user.email}
|
ret = {"name": user.name or "", "email": user.email}
|
||||||
|
|
||||||
api_key = ApiKey.get_by(user_id=user.id, name=device)
|
api_key = ApiKey.get_by(user_id=user.id, name=device)
|
||||||
if not api_key:
|
if not api_key:
|
||||||
|
|
|
@ -14,7 +14,7 @@ from app.utils import random_string
|
||||||
|
|
||||||
def user_to_dict(user: User) -> dict:
|
def user_to_dict(user: User) -> dict:
|
||||||
ret = {
|
ret = {
|
||||||
"name": user.name,
|
"name": user.name or "",
|
||||||
"is_premium": user.is_premium(),
|
"is_premium": user.is_premium(),
|
||||||
"email": user.email,
|
"email": user.email,
|
||||||
"in_trial": user.in_trial(),
|
"in_trial": user.in_trial(),
|
||||||
|
|
|
@ -59,7 +59,7 @@ def fido():
|
||||||
browser = MfaBrowser.get_by(token=request.cookies.get("mfa"))
|
browser = MfaBrowser.get_by(token=request.cookies.get("mfa"))
|
||||||
if browser and not browser.is_expired() and browser.user_id == user.id:
|
if browser and not browser.is_expired() and browser.user_id == user.id:
|
||||||
login_user(user)
|
login_user(user)
|
||||||
flash(f"Welcome back {user.name}!", "success")
|
flash(f"Welcome back!", "success")
|
||||||
# Redirect user to correct page
|
# Redirect user to correct page
|
||||||
return redirect(next_url or url_for("dashboard.index"))
|
return redirect(next_url or url_for("dashboard.index"))
|
||||||
else:
|
else:
|
||||||
|
@ -106,7 +106,7 @@ def fido():
|
||||||
del session[MFA_USER_ID]
|
del session[MFA_USER_ID]
|
||||||
|
|
||||||
login_user(user)
|
login_user(user)
|
||||||
flash(f"Welcome back {user.name}!", "success")
|
flash(f"Welcome back!", "success")
|
||||||
|
|
||||||
# Redirect user to correct page
|
# Redirect user to correct page
|
||||||
response = make_response(redirect(next_url or url_for("dashboard.index")))
|
response = make_response(redirect(next_url or url_for("dashboard.index")))
|
||||||
|
|
|
@ -52,7 +52,7 @@ def mfa():
|
||||||
browser = MfaBrowser.get_by(token=request.cookies.get("mfa"))
|
browser = MfaBrowser.get_by(token=request.cookies.get("mfa"))
|
||||||
if browser and not browser.is_expired() and browser.user_id == user.id:
|
if browser and not browser.is_expired() and browser.user_id == user.id:
|
||||||
login_user(user)
|
login_user(user)
|
||||||
flash(f"Welcome back {user.name}!", "success")
|
flash(f"Welcome back!", "success")
|
||||||
# Redirect user to correct page
|
# Redirect user to correct page
|
||||||
return redirect(next_url or url_for("dashboard.index"))
|
return redirect(next_url or url_for("dashboard.index"))
|
||||||
else:
|
else:
|
||||||
|
@ -70,7 +70,7 @@ def mfa():
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
login_user(user)
|
login_user(user)
|
||||||
flash(f"Welcome back {user.name}!", "success")
|
flash(f"Welcome back!", "success")
|
||||||
|
|
||||||
# Redirect user to correct page
|
# Redirect user to correct page
|
||||||
response = make_response(redirect(next_url or url_for("dashboard.index")))
|
response = make_response(redirect(next_url or url_for("dashboard.index")))
|
||||||
|
|
|
@ -50,7 +50,7 @@ def recovery_route():
|
||||||
del session[MFA_USER_ID]
|
del session[MFA_USER_ID]
|
||||||
|
|
||||||
login_user(user)
|
login_user(user)
|
||||||
flash(f"Welcome back {user.name}!", "success")
|
flash(f"Welcome back!", "success")
|
||||||
|
|
||||||
recovery_code.used = True
|
recovery_code.used = True
|
||||||
recovery_code.used_at = arrow.now()
|
recovery_code.used_at = arrow.now()
|
||||||
|
|
|
@ -110,4 +110,4 @@ def send_activation_email(user, next_url):
|
||||||
LOG.d("redirect user to %s after activation", next_url)
|
LOG.d("redirect user to %s after activation", next_url)
|
||||||
activation_link = activation_link + "&next=" + encode_url(next_url)
|
activation_link = activation_link + "&next=" + encode_url(next_url)
|
||||||
|
|
||||||
email_utils.send_activation_email(user.email, user.name, activation_link)
|
email_utils.send_activation_email(user.email, activation_link)
|
||||||
|
|
|
@ -331,7 +331,7 @@ def send_reset_password_email(user):
|
||||||
|
|
||||||
reset_password_link = f"{URL}/auth/reset_password?code={reset_password_code.code}"
|
reset_password_link = f"{URL}/auth/reset_password?code={reset_password_code.code}"
|
||||||
|
|
||||||
email_utils.send_reset_password_email(user.email, user.name, reset_password_link)
|
email_utils.send_reset_password_email(user.email, reset_password_link)
|
||||||
|
|
||||||
|
|
||||||
def send_change_email_confirmation(user: User, email_change: EmailChange):
|
def send_change_email_confirmation(user: User, email_change: EmailChange):
|
||||||
|
@ -341,7 +341,7 @@ def send_change_email_confirmation(user: User, email_change: EmailChange):
|
||||||
|
|
||||||
link = f"{URL}/auth/change_email?code={email_change.code}"
|
link = f"{URL}/auth/change_email?code={email_change.code}"
|
||||||
|
|
||||||
email_utils.send_change_email(email_change.new_email, user.email, user.name, link)
|
email_utils.send_change_email(email_change.new_email, user.email, link)
|
||||||
|
|
||||||
|
|
||||||
@dashboard_bp.route("/resend_email_change", methods=["GET", "POST"])
|
@dashboard_bp.route("/resend_email_change", methods=["GET", "POST"])
|
||||||
|
|
|
@ -78,9 +78,9 @@ def send_welcome_email(user):
|
||||||
|
|
||||||
send_email(
|
send_email(
|
||||||
to_email,
|
to_email,
|
||||||
f"Welcome to SimpleLogin {user.name}",
|
f"Welcome to SimpleLogin",
|
||||||
render("com/welcome.txt", name=user.name, user=user, alias=alias),
|
render("com/welcome.txt", user=user, alias=alias),
|
||||||
render("com/welcome.html", name=user.name, user=user, alias=alias),
|
render("com/welcome.html", user=user, alias=alias),
|
||||||
unsubscribe_link,
|
unsubscribe_link,
|
||||||
via_email,
|
via_email,
|
||||||
)
|
)
|
||||||
|
@ -89,62 +89,56 @@ def send_welcome_email(user):
|
||||||
def send_trial_end_soon_email(user):
|
def send_trial_end_soon_email(user):
|
||||||
send_email(
|
send_email(
|
||||||
user.email,
|
user.email,
|
||||||
f"Your trial will end soon {user.name}",
|
f"Your trial will end soon",
|
||||||
render("transactional/trial-end.txt", name=user.name, user=user),
|
render("transactional/trial-end.txt", user=user),
|
||||||
render("transactional/trial-end.html", name=user.name, user=user),
|
render("transactional/trial-end.html", user=user),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def send_activation_email(email, name, activation_link):
|
def send_activation_email(email, activation_link):
|
||||||
send_email(
|
send_email(
|
||||||
email,
|
email,
|
||||||
f"Just one more step to join SimpleLogin {name}",
|
f"Just one more step to join SimpleLogin",
|
||||||
render(
|
render(
|
||||||
"transactional/activation.txt",
|
"transactional/activation.txt",
|
||||||
name=name,
|
|
||||||
activation_link=activation_link,
|
activation_link=activation_link,
|
||||||
email=email,
|
email=email,
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/activation.html",
|
"transactional/activation.html",
|
||||||
name=name,
|
|
||||||
activation_link=activation_link,
|
activation_link=activation_link,
|
||||||
email=email,
|
email=email,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def send_reset_password_email(email, name, reset_password_link):
|
def send_reset_password_email(email, reset_password_link):
|
||||||
send_email(
|
send_email(
|
||||||
email,
|
email,
|
||||||
"Reset your password on SimpleLogin",
|
"Reset your password on SimpleLogin",
|
||||||
render(
|
render(
|
||||||
"transactional/reset-password.txt",
|
"transactional/reset-password.txt",
|
||||||
name=name,
|
|
||||||
reset_password_link=reset_password_link,
|
reset_password_link=reset_password_link,
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/reset-password.html",
|
"transactional/reset-password.html",
|
||||||
name=name,
|
|
||||||
reset_password_link=reset_password_link,
|
reset_password_link=reset_password_link,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def send_change_email(new_email, current_email, name, link):
|
def send_change_email(new_email, current_email, link):
|
||||||
send_email(
|
send_email(
|
||||||
new_email,
|
new_email,
|
||||||
"Confirm email update on SimpleLogin",
|
"Confirm email update on SimpleLogin",
|
||||||
render(
|
render(
|
||||||
"transactional/change-email.txt",
|
"transactional/change-email.txt",
|
||||||
name=name,
|
|
||||||
link=link,
|
link=link,
|
||||||
new_email=new_email,
|
new_email=new_email,
|
||||||
current_email=current_email,
|
current_email=current_email,
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/change-email.html",
|
"transactional/change-email.html",
|
||||||
name=name,
|
|
||||||
link=link,
|
link=link,
|
||||||
new_email=new_email,
|
new_email=new_email,
|
||||||
current_email=current_email,
|
current_email=current_email,
|
||||||
|
@ -170,13 +164,11 @@ def send_cannot_create_directory_alias(user, alias_address, directory_name):
|
||||||
f"Alias {alias_address} cannot be created",
|
f"Alias {alias_address} cannot be created",
|
||||||
render(
|
render(
|
||||||
"transactional/cannot-create-alias-directory.txt",
|
"transactional/cannot-create-alias-directory.txt",
|
||||||
name=user.name,
|
|
||||||
alias=alias_address,
|
alias=alias_address,
|
||||||
directory=directory_name,
|
directory=directory_name,
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/cannot-create-alias-directory.html",
|
"transactional/cannot-create-alias-directory.html",
|
||||||
name=user.name,
|
|
||||||
alias=alias_address,
|
alias=alias_address,
|
||||||
directory=directory_name,
|
directory=directory_name,
|
||||||
),
|
),
|
||||||
|
@ -194,13 +186,11 @@ def send_cannot_create_directory_alias_disabled(user, alias_address, directory_n
|
||||||
f"Alias {alias_address} cannot be created",
|
f"Alias {alias_address} cannot be created",
|
||||||
render(
|
render(
|
||||||
"transactional/cannot-create-alias-directory-disabled.txt",
|
"transactional/cannot-create-alias-directory-disabled.txt",
|
||||||
name=user.name,
|
|
||||||
alias=alias_address,
|
alias=alias_address,
|
||||||
directory=directory_name,
|
directory=directory_name,
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/cannot-create-alias-directory-disabled.html",
|
"transactional/cannot-create-alias-directory-disabled.html",
|
||||||
name=user.name,
|
|
||||||
alias=alias_address,
|
alias=alias_address,
|
||||||
directory=directory_name,
|
directory=directory_name,
|
||||||
),
|
),
|
||||||
|
@ -216,13 +206,11 @@ def send_cannot_create_domain_alias(user, alias, domain):
|
||||||
f"Alias {alias} cannot be created",
|
f"Alias {alias} cannot be created",
|
||||||
render(
|
render(
|
||||||
"transactional/cannot-create-alias-domain.txt",
|
"transactional/cannot-create-alias-domain.txt",
|
||||||
name=user.name,
|
|
||||||
alias=alias,
|
alias=alias,
|
||||||
domain=domain,
|
domain=domain,
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/cannot-create-alias-domain.html",
|
"transactional/cannot-create-alias-domain.html",
|
||||||
name=user.name,
|
|
||||||
alias=alias,
|
alias=alias,
|
||||||
domain=domain,
|
domain=domain,
|
||||||
),
|
),
|
||||||
|
|
|
@ -1182,9 +1182,9 @@ class ClientUser(db.Model, ModelMixin):
|
||||||
for scope in self.client.get_scopes():
|
for scope in self.client.get_scopes():
|
||||||
if scope == Scope.NAME:
|
if scope == Scope.NAME:
|
||||||
if self.name:
|
if self.name:
|
||||||
res[Scope.NAME.value] = self.name
|
res[Scope.NAME.value] = self.name or ""
|
||||||
else:
|
else:
|
||||||
res[Scope.NAME.value] = self.user.name
|
res[Scope.NAME.value] = self.user.name or ""
|
||||||
elif scope == Scope.AVATAR_URL:
|
elif scope == Scope.AVATAR_URL:
|
||||||
if self.user.profile_picture_id:
|
if self.user.profile_picture_id:
|
||||||
if self.default_avatar:
|
if self.default_avatar:
|
||||||
|
|
8
cron.py
8
cron.py
|
@ -88,7 +88,7 @@ def notify_premium_end():
|
||||||
|
|
||||||
send_email(
|
send_email(
|
||||||
user.email,
|
user.email,
|
||||||
f"Your subscription will end soon {user.name}",
|
f"Your subscription will end soon",
|
||||||
render(
|
render(
|
||||||
"transactional/subscription-end.txt",
|
"transactional/subscription-end.txt",
|
||||||
user=user,
|
user=user,
|
||||||
|
@ -115,16 +115,14 @@ def notify_manual_sub_end():
|
||||||
LOG.debug("Remind user %s that their manual sub is ending soon", user)
|
LOG.debug("Remind user %s that their manual sub is ending soon", user)
|
||||||
send_email(
|
send_email(
|
||||||
user.email,
|
user.email,
|
||||||
f"Your subscription will end soon {user.name}",
|
f"Your subscription will end soon",
|
||||||
render(
|
render(
|
||||||
"transactional/manual-subscription-end.txt",
|
"transactional/manual-subscription-end.txt",
|
||||||
name=user.name,
|
|
||||||
user=user,
|
user=user,
|
||||||
manual_sub=manual_sub,
|
manual_sub=manual_sub,
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/manual-subscription-end.html",
|
"transactional/manual-subscription-end.html",
|
||||||
name=user.name,
|
|
||||||
user=user,
|
user=user,
|
||||||
manual_sub=manual_sub,
|
manual_sub=manual_sub,
|
||||||
),
|
),
|
||||||
|
@ -498,13 +496,11 @@ def check_custom_domain():
|
||||||
render(
|
render(
|
||||||
"transactional/custom-domain-dns-issue.txt",
|
"transactional/custom-domain-dns-issue.txt",
|
||||||
custom_domain=custom_domain,
|
custom_domain=custom_domain,
|
||||||
name=user.name or "",
|
|
||||||
domain_dns_url=domain_dns_url,
|
domain_dns_url=domain_dns_url,
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/custom-domain-dns-issue.html",
|
"transactional/custom-domain-dns-issue.html",
|
||||||
custom_domain=custom_domain,
|
custom_domain=custom_domain,
|
||||||
name=user.name or "",
|
|
||||||
domain_dns_url=domain_dns_url,
|
domain_dns_url=domain_dns_url,
|
||||||
),
|
),
|
||||||
max_nb_alert=1,
|
max_nb_alert=1,
|
||||||
|
|
|
@ -447,14 +447,12 @@ def handle_email_sent_to_ourself(alias, mailbox, msg: Message, user):
|
||||||
f"Email sent to {alias.email} from its own mailbox {mailbox.email}",
|
f"Email sent to {alias.email} from its own mailbox {mailbox.email}",
|
||||||
render(
|
render(
|
||||||
"transactional/cycle-email.txt",
|
"transactional/cycle-email.txt",
|
||||||
name=user.name or "",
|
|
||||||
alias=alias,
|
alias=alias,
|
||||||
mailbox=mailbox,
|
mailbox=mailbox,
|
||||||
refused_email_url=refused_email_url,
|
refused_email_url=refused_email_url,
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/cycle-email.html",
|
"transactional/cycle-email.html",
|
||||||
name=user.name or "",
|
|
||||||
alias=alias,
|
alias=alias,
|
||||||
mailbox=mailbox,
|
mailbox=mailbox,
|
||||||
refused_email_url=refused_email_url,
|
refused_email_url=refused_email_url,
|
||||||
|
@ -569,14 +567,12 @@ def forward_email_to_mailbox(
|
||||||
f"Your mailbox {mailbox.email} and alias {alias.email} use the same domain",
|
f"Your mailbox {mailbox.email} and alias {alias.email} use the same domain",
|
||||||
render(
|
render(
|
||||||
"transactional/mailbox-invalid.txt",
|
"transactional/mailbox-invalid.txt",
|
||||||
name=user.name or "",
|
|
||||||
mailbox=mailbox,
|
mailbox=mailbox,
|
||||||
mailbox_url=mailbox_url,
|
mailbox_url=mailbox_url,
|
||||||
alias=alias,
|
alias=alias,
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/mailbox-invalid.html",
|
"transactional/mailbox-invalid.html",
|
||||||
name=user.name or "",
|
|
||||||
mailbox=mailbox,
|
mailbox=mailbox,
|
||||||
mailbox_url=mailbox_url,
|
mailbox_url=mailbox_url,
|
||||||
alias=alias,
|
alias=alias,
|
||||||
|
@ -1037,7 +1033,6 @@ def spf_pass(
|
||||||
f"SimpleLogin Alert: attempt to send emails from your alias {alias.email} from unknown IP Address",
|
f"SimpleLogin Alert: attempt to send emails from your alias {alias.email} from unknown IP Address",
|
||||||
render(
|
render(
|
||||||
"transactional/spf-fail.txt",
|
"transactional/spf-fail.txt",
|
||||||
name=user.name,
|
|
||||||
alias=alias.email,
|
alias=alias.email,
|
||||||
ip=ip,
|
ip=ip,
|
||||||
mailbox_url=URL + f"/dashboard/mailbox/{mailbox.id}#spf",
|
mailbox_url=URL + f"/dashboard/mailbox/{mailbox.id}#spf",
|
||||||
|
@ -1047,8 +1042,6 @@ def spf_pass(
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/spf-fail.html",
|
"transactional/spf-fail.html",
|
||||||
name=user.name,
|
|
||||||
alias=alias.email,
|
|
||||||
ip=ip,
|
ip=ip,
|
||||||
mailbox_url=URL + f"/dashboard/mailbox/{mailbox.id}#spf",
|
mailbox_url=URL + f"/dashboard/mailbox/{mailbox.id}#spf",
|
||||||
to_email=contact_email,
|
to_email=contact_email,
|
||||||
|
@ -1094,7 +1087,6 @@ def handle_unknown_mailbox(
|
||||||
f"Attempt to use your alias {alias.email} from {envelope.mail_from}",
|
f"Attempt to use your alias {alias.email} from {envelope.mail_from}",
|
||||||
render(
|
render(
|
||||||
"transactional/reply-must-use-personal-email.txt",
|
"transactional/reply-must-use-personal-email.txt",
|
||||||
name=user.name,
|
|
||||||
alias=alias,
|
alias=alias,
|
||||||
sender=envelope.mail_from,
|
sender=envelope.mail_from,
|
||||||
authorize_address_link=authorize_address_link,
|
authorize_address_link=authorize_address_link,
|
||||||
|
@ -1102,7 +1094,6 @@ def handle_unknown_mailbox(
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/reply-must-use-personal-email.html",
|
"transactional/reply-must-use-personal-email.html",
|
||||||
name=user.name,
|
|
||||||
alias=alias,
|
alias=alias,
|
||||||
sender=envelope.mail_from,
|
sender=envelope.mail_from,
|
||||||
authorize_address_link=authorize_address_link,
|
authorize_address_link=authorize_address_link,
|
||||||
|
@ -1409,7 +1400,6 @@ def handle_spam(
|
||||||
f"Email from {alias.email} to {contact.website_email} is detected as spam",
|
f"Email from {alias.email} to {contact.website_email} is detected as spam",
|
||||||
render(
|
render(
|
||||||
"transactional/spam-email-reply-phase.txt",
|
"transactional/spam-email-reply-phase.txt",
|
||||||
name=user.name,
|
|
||||||
alias=alias,
|
alias=alias,
|
||||||
website_email=contact.website_email,
|
website_email=contact.website_email,
|
||||||
disable_alias_link=disable_alias_link,
|
disable_alias_link=disable_alias_link,
|
||||||
|
@ -1417,7 +1407,6 @@ def handle_spam(
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/spam-email-reply-phase.html",
|
"transactional/spam-email-reply-phase.html",
|
||||||
name=user.name,
|
|
||||||
alias=alias,
|
alias=alias,
|
||||||
website_email=contact.website_email,
|
website_email=contact.website_email,
|
||||||
disable_alias_link=disable_alias_link,
|
disable_alias_link=disable_alias_link,
|
||||||
|
@ -1440,7 +1429,6 @@ def handle_spam(
|
||||||
f"Email from {contact.website_email} to {alias.email} is detected as spam",
|
f"Email from {contact.website_email} to {alias.email} is detected as spam",
|
||||||
render(
|
render(
|
||||||
"transactional/spam-email.txt",
|
"transactional/spam-email.txt",
|
||||||
name=user.name,
|
|
||||||
alias=alias,
|
alias=alias,
|
||||||
website_email=contact.website_email,
|
website_email=contact.website_email,
|
||||||
disable_alias_link=disable_alias_link,
|
disable_alias_link=disable_alias_link,
|
||||||
|
@ -1448,7 +1436,6 @@ def handle_spam(
|
||||||
),
|
),
|
||||||
render(
|
render(
|
||||||
"transactional/spam-email.html",
|
"transactional/spam-email.html",
|
||||||
name=user.name,
|
|
||||||
alias=alias,
|
alias=alias,
|
||||||
website_email=contact.website_email,
|
website_email=contact.website_email,
|
||||||
disable_alias_link=disable_alias_link,
|
disable_alias_link=disable_alias_link,
|
||||||
|
|
|
@ -604,7 +604,6 @@ def setup_paddle_callback(app: Flask):
|
||||||
"SimpleLogin - what can we do to improve the product?",
|
"SimpleLogin - what can we do to improve the product?",
|
||||||
render(
|
render(
|
||||||
"transactional/subscription-cancel.txt",
|
"transactional/subscription-cancel.txt",
|
||||||
name=user.name or "",
|
|
||||||
end_date=request.form.get("cancellation_effective_date"),
|
end_date=request.form.get("cancellation_effective_date"),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
@ -2,11 +2,7 @@
|
||||||
|
|
||||||
{% block greeting %}
|
{% block greeting %}
|
||||||
<h1 style="margin-top: 0; color: #333333; font-size: 22px; font-weight: bold; text-align: left;" align="left">
|
<h1 style="margin-top: 0; color: #333333; font-size: 22px; font-weight: bold; text-align: left;" align="left">
|
||||||
{% if name %}
|
Welcome!
|
||||||
Welcome, {{ name }}!
|
|
||||||
{% else %}
|
|
||||||
Welcome!
|
|
||||||
{% endif %}
|
|
||||||
</h1>
|
</h1>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Hi {{name}}
|
Hi!
|
||||||
|
|
||||||
{% if alias %}
|
{% if alias %}
|
||||||
This is the first email you receive via your first alias {{ alias }}.
|
This is the first email you receive via your first alias {{ alias }}.
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ render_text("Hi " + name) }}
|
|
||||||
{{ render_text("Thank you for choosing SimpleLogin.") }}
|
{{ render_text("Thank you for choosing SimpleLogin.") }}
|
||||||
{{ render_text("To get started, please confirm that <b>" + email + "</b> is your email address by clicking on the button below within 1 hour.") }}
|
{{ render_text("To get started, please confirm that <b>" + email + "</b> is your email address by clicking on the button below within 1 hour.") }}
|
||||||
{{ render_button("Verify email", activation_link) }}
|
{{ render_button("Verify email", activation_link) }}
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
Thank you for choosing SimpleLogin.
|
Thank you for choosing SimpleLogin.
|
||||||
|
|
||||||
To get started, please confirm that {{email}} is your email address using this link {{activation_link}} within 1 hour.
|
To get started, please confirm that {{email}} is your email address using this link {{activation_link}} within 1 hour.
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ render_text("Hi " + name) }}
|
{% call text() %}
|
||||||
|
<h1>
|
||||||
|
Cannot create {{ alias }} on-the-fly
|
||||||
|
</h1>
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{% call text() %}
|
{% call text() %}
|
||||||
An email has been sent to the alias <b>{{ alias }}</b> that would be created automatically as you own the directory <b>{{ directory }}</b>
|
An email has been sent to the alias <b>{{ alias }}</b> that would be created automatically as you own the directory <b>{{ directory }}</b>
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
An email has been sent to the alias {{alias}} that would be created automatically as you own the directory {{directory}}.
|
An email has been sent to the alias {{alias}} that would be created automatically as you own the directory {{directory}}.
|
||||||
|
|
||||||
As the directory has the on-the-fly alias creation disabled, the alias isn't created.
|
As the directory has the on-the-fly alias creation disabled, the alias isn't created.
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ render_text("Hi " + name) }}
|
{% call text() %}
|
||||||
|
<h1>
|
||||||
|
Cannot create alias {{ alias }} on-the-fly
|
||||||
|
</h1>
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{{ render_text("An email has been sent to the alias <b>" + alias + "</b> that would be created automatically as you own the directory <b>" + directory + "</b>.") }}
|
{{ render_text("An email has been sent to the alias <b>" + alias + "</b> that would be created automatically as you own the directory <b>" + directory + "</b>.") }}
|
||||||
|
|
||||||
{{ render_text("However as your plan is no longer premium, this creation cannot happen.") }}
|
{{ render_text("However as your plan is no longer premium, this creation cannot happen.") }}
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
An email has been sent to the alias {{alias}} that would be created automatically as you own the directory {{directory}}. However as your plan is no longer premium, this creation cannot happen.
|
An email has been sent to the alias {{alias}} that would be created automatically as you own the directory {{directory}}. However as your plan is no longer premium, this creation cannot happen.
|
||||||
|
|
||||||
Please upgrade to premium plan in order to use this feature.
|
Please upgrade to premium plan in order to use this feature.
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ render_text("Hi " + name) }}
|
{% call text() %}
|
||||||
|
<h1>
|
||||||
|
Cannot create {{ alias }} on-the-fly
|
||||||
|
</h1>
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{{ render_text("An email has been sent to the alias <b>" + alias + "</b> that would be created automatically as you own the domain <b>" + domain + "</b>.") }}
|
{{ render_text("An email has been sent to the alias <b>" + alias + "</b> that would be created automatically as you own the domain <b>" + domain + "</b>.") }}
|
||||||
|
|
||||||
{{ render_text("However as your plan is no longer premium, this creation cannot happen.") }}
|
{{ render_text("However as your plan is no longer premium, this creation cannot happen.") }}
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
An email has been sent to the alias {{alias}} that would be created automatically as you own the domain {{domain}}. However as your plan is no longer premium, this creation cannot happen.
|
An email has been sent to the alias {{alias}} that would be created automatically as you own the domain {{domain}}. However as your plan is no longer premium, this creation cannot happen.
|
||||||
|
|
||||||
Please upgrade to premium plan in order to use this feature.
|
Please upgrade to premium plan in order to use this feature.
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ render_text("Hi " + name) }}
|
|
||||||
{{ render_text("You recently requested to change your email on SimpleLogin to <b>"+ new_email +"</b>.") }}
|
{{ render_text("You recently requested to change your email on SimpleLogin to <b>"+ new_email +"</b>.") }}
|
||||||
{{ render_text("Your current email is " + current_email + ".") }}
|
{{ render_text("Your current email is " + current_email + ".") }}
|
||||||
{{ render_text("Use the button below to confirm within the next 12 hours.") }}
|
{{ render_text("Use the button below to confirm within the next 12 hours.") }}
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
You have asked to change your email to {{new_email}}.
|
You have asked to change your email to {{new_email}}.
|
||||||
|
|
||||||
Your current email is {{current_email}}.
|
Your current email is {{current_email}}.
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ render_text("Hi " + name) }}
|
|
||||||
|
|
||||||
{% call text() %}
|
{% call text() %}
|
||||||
We have detected that your domain <b>{{ custom_domain.domain }}</b> does not have the DNS set up correctly.
|
<h1>
|
||||||
|
<b>{{ custom_domain.domain }}</b> does not have the DNS set up correctly
|
||||||
|
</h1>
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
|
|
||||||
{% call text() %}
|
{% call text() %}
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
We have detected that your domain {{ custom_domain.domain }} does not have the DNS set up correctly.
|
We have detected that your domain {{ custom_domain.domain }} does not have the DNS set up correctly.
|
||||||
|
|
||||||
Please make sure to set up your domain following the instructions on your domain DNS page at:
|
Please make sure to set up your domain following the instructions on your domain DNS page at:
|
||||||
|
|
|
@ -2,12 +2,10 @@
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% call text() %}
|
{% call text() %}
|
||||||
Hi {{ name }}
|
<h1>
|
||||||
{% endcall %}
|
An email was sent to your alias <b>{{ alias.email }}</b> from its own mailbox
|
||||||
|
<b>{{ mailbox.email }}</b>.
|
||||||
{% call text() %}
|
</h1>
|
||||||
An email was sent to your alias <b>{{ alias.email }}</b> from its own mailbox
|
|
||||||
<b>{{ mailbox.email }}</b>.
|
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
|
|
||||||
{% call text() %}
|
{% call text() %}
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
An email was sent to your alias {{ alias.email }} from its own mailbox {{ mailbox.email }}.
|
An email was sent to your alias {{ alias.email }} from its own mailbox {{ mailbox.email }}.
|
||||||
|
|
||||||
SimpleLogin doesn't send this email back to your mailbox as it would be refused or hidden anyway by your email service.
|
SimpleLogin doesn't send this email back to your mailbox as it would be refused or hidden anyway by your email service.
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
Hi {{name}}
|
Your mailbox {{ mailbox.email }} and alias {{alias.email}} cannot have the same domain.
|
||||||
|
|
||||||
Your mailbox {{ mailbox.email }} and alias {{alias.email}} cannot use the same domain.
|
|
||||||
|
|
||||||
The alias domain should point to SimpleLogin servers so emails sent to it are forwarded by SimpleLogin.
|
The alias domain should point to SimpleLogin servers so emails sent to it are forwarded by SimpleLogin.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
Your subscription will end on {{ manual_sub.end_at.format("YYYY-MM-DD") }}
|
Your subscription will end on {{ manual_sub.end_at.format("YYYY-MM-DD") }}
|
||||||
|
|
||||||
Please contact us at hi@simplelogin.io to renew your subscription.
|
Please contact us at hi@simplelogin.io to renew your subscription.
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ render_text("Hi " + name) }}
|
{% call text() %}
|
||||||
|
<h1>
|
||||||
|
An attempt to send an email from your alias <b>{{ alias.email }}</b> using <b>{{ sender }}</b> is blocked.
|
||||||
|
</h1>
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{% call text() %}
|
{% call text() %}
|
||||||
As a measure to protect against <b>email spoofing</b>, we have blocked an attempt to send an email from your alias <b>{{ alias.email }}</b> using <b>{{ sender }}</b>.
|
As a measure to protect against <b>email spoofing</b>, we have blocked an attempt to send an email from your alias <b>{{ alias.email }}</b> using <b>{{ sender }}</b>.
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
We have recorded an attempt to send an email from your alias {{ alias.email }} using {{ sender }}.
|
We have recorded an attempt to send an email from your alias {{ alias.email }} using {{ sender }}.
|
||||||
|
|
||||||
Please note that sending from this alias only works from alias's owning mailboxes, that are
|
Please note that sending from this alias only works from alias's owning mailboxes, that are
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ render_text("Hi " + name) }}
|
|
||||||
{{ render_text("You recently requested to reset your password on SimpleLogin.") }}
|
{{ render_text("You recently requested to reset your password on SimpleLogin.") }}
|
||||||
{{ render_text("Use the button below to reset it. <b>This password reset is only valid for the next hour.</b>") }}
|
{{ render_text("Use the button below to reset it. <b>This password reset is only valid for the next hour.</b>") }}
|
||||||
{{ render_button("Reset your password", reset_password_link) }}
|
{{ render_button("Reset your password", reset_password_link) }}
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
To reset or change your password, please click on this link:
|
To reset or change your password, please click on this link:
|
||||||
|
|
||||||
{{reset_password_link}}
|
{{reset_password_link}}
|
||||||
|
|
|
@ -1,16 +1,29 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ render_text("Hi " + name) }}
|
{% call text() %}
|
||||||
{{ render_text("An email sent from your alias <b>" + alias.email + "</b> to <b>" + website_email + "</b> is detected as spam by our Spam Detection Engine (SpamAssassin).") }}
|
<h1>
|
||||||
|
An email sent from your alias {{ alias.email }} to {{ website_email }} is detected as spam.
|
||||||
|
</h1>
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{{ render_text('In most of the cases, the email will be refused by your contact.') }}
|
{% call text() %}
|
||||||
|
An email sent from your alias {{ alias.email }} to {{ website_email }} is detected as spam by our Spam Detection Engine (SpamAssassin).
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
|
{% call text() %}
|
||||||
|
In most of the cases, the email will be refused by your contact.
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{{ render_button("View the email", refused_email_url) }}
|
{{ render_button("View the email", refused_email_url) }}
|
||||||
|
|
||||||
{{ render_text('The email is automatically deleted in 7 days.') }}
|
{% call text() %}
|
||||||
|
The email is automatically deleted in 7 days.
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{{ render_text('Please let us know if you have any question by replying to this email.') }}
|
{% call text() %}
|
||||||
|
Please let us know if you have any question by replying to this email.
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{{ render_text('Thanks, <br />SimpleLogin Team.') }}
|
{{ render_text('Thanks, <br />SimpleLogin Team.') }}
|
||||||
{{ raw_url(disable_alias_link) }}
|
{{ raw_url(disable_alias_link) }}
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
An email sent from your alias {{alias.email}} to {{website_email}} is detected as spam by our Spam Detection Engine (SpamAssassin).
|
An email sent from your alias {{alias.email}} to {{website_email}} is detected as spam by our Spam Detection Engine (SpamAssassin).
|
||||||
|
|
||||||
In most of the cases, the email will be refused by your contact.
|
In most of the cases, the email will be refused by your contact.
|
||||||
|
|
|
@ -1,16 +1,29 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ render_text("Hi " + name) }}
|
{% call text() %}
|
||||||
{{ render_text("An email sent to your alias <b>" + alias.email + "</b> from <b>" + website_email + "</b> is detected as spam by our Spam Detection Engine (SpamAssassin).") }}
|
<h1>
|
||||||
|
An email sent to your alias {{ alias.email }} from {{ website_email }} is detected as spam
|
||||||
|
</h1>
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{{ render_text('In most of the cases, the email will be refused by your email provider.') }}
|
{% call text() %}
|
||||||
|
An email sent to your alias {{ alias.email }} from {{ website_email }} is detected as spam by our Spam Detection Engine (SpamAssassin).
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
|
{% call text() %}
|
||||||
|
In most of the cases, the email will be refused by your email provider.
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{{ render_button("View the email", refused_email_url) }}
|
{{ render_button("View the email", refused_email_url) }}
|
||||||
|
|
||||||
{{ render_text('The email is automatically deleted in 7 days.') }}
|
{% call text() %}
|
||||||
|
The email is automatically deleted in 7 days.
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{{ render_text('Your alias <b>' + alias.email + '</b> is probably in the hands of a spammer now. In this case, you should disable or delete the alias immediately.') }}
|
{% call text() %}
|
||||||
|
Your alias {{ alias.email }} is probably in the hands of a spammer now. In this case, you should disable or delete the alias immediately.
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{{ render_button("Disable alias", disable_alias_link) }}
|
{{ render_button("Disable alias", disable_alias_link) }}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
An email sent to your alias {{alias.email}} from {{website_email}} is detected as spam by our Spam Detection Engine (SpamAssassin).
|
An email sent to your alias {{alias.email}} from {{website_email}} is detected as spam by our Spam Detection Engine (SpamAssassin).
|
||||||
|
|
||||||
In most of the cases, the email will be refused by your email provider.
|
In most of the cases, the email will be refused by your email provider.
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{{ render_text("Hi " + name) }}
|
{% call text() %}
|
||||||
|
<h1>
|
||||||
|
Attempt to send an email from your alias <b>{{ alias }}</b> from an unknown IP address
|
||||||
|
</h1>
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{% call text() %}
|
{% call text() %}
|
||||||
We have recorded an attempt to send the following email from your alias <b>{{ alias }}</b> from an unknown IP
|
We have recorded an attempt to send the following email from your alias <b>{{ alias }}</b> from an unknown IP
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
We have recorded an attempt to send the following email from your alias {{ alias }} from an unknown IP address {{ ip }}.
|
We have recorded an attempt to send the following email from your alias {{ alias }} from an unknown IP address {{ ip }}.
|
||||||
|
|
||||||
- From: {{alias}}
|
- From: {{alias}}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Hi {{name}}
|
Hi,
|
||||||
|
|
||||||
This is Son, SimpleLogin founder. I saw that you have canceled your subscription.
|
This is Son, SimpleLogin founder. I saw that you have canceled your subscription.
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if name %}
|
|
||||||
{{ render_text("Hi " + name + ",") }}
|
|
||||||
{% else %}
|
|
||||||
{{ render_text("Hi,") }}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{{ render_text("Your trial will end " + user.trial_end.humanize() + ".") }}
|
{% call text() %}
|
||||||
|
<h1>
|
||||||
|
Your trial will end {{ user.trial_end.humanize() }}
|
||||||
|
</h1>
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
{{ render_text("When the trial ends:") }}
|
{{ render_text("When the trial ends:") }}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Hi {{name}}
|
|
||||||
|
|
||||||
Your trial will end {{ user.trial_end.humanize() }}.
|
Your trial will end {{ user.trial_end.humanize() }}.
|
||||||
|
|
||||||
When the trial ends:
|
When the trial ends:
|
||||||
|
|
Loading…
Reference in New Issue