mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 06:53:25 +00:00
emails: Add a FromAddress class to control access to certain settings emails.
No change in behavior. Also makes the first step towards converting all uses of settings.ZULIP_ADMINISTRATOR and settings.NOREPLY_EMAIL_ADDRESS to FromAddress.*. Once everything is converted, it will be easier to ensure that future development doesn't break backwards compatibility with the old style of settings emails.
This commit is contained in:
@@ -29,7 +29,7 @@ from zerver.lib.message import (
|
||||
)
|
||||
from zerver.lib.realm_icon import realm_icon_url
|
||||
from zerver.lib.retention import move_message_to_archive
|
||||
from zerver.lib.send_email import send_email
|
||||
from zerver.lib.send_email import send_email, FromAddress
|
||||
from zerver.models import Realm, RealmEmoji, Stream, UserProfile, UserActivity, \
|
||||
RealmDomain, \
|
||||
Subscription, Recipient, Message, Attachment, UserMessage, RealmAuditLog, \
|
||||
@@ -640,8 +640,7 @@ def do_start_email_change_process(user_profile, new_email):
|
||||
activation_url = EmailChangeConfirmation.objects.get_link_for_object(obj, host=user_profile.realm.host)
|
||||
context = {'realm': user_profile.realm, 'old_email': old_email, 'new_email': new_email,
|
||||
'activate_url': activation_url}
|
||||
send_email('zerver/emails/confirm_new_email', new_email, from_address=settings.ZULIP_ADMINISTRATOR.split()[-1],
|
||||
context=context)
|
||||
send_email('zerver/emails/confirm_new_email', new_email, from_address=FromAddress.SUPPORT, context=context)
|
||||
|
||||
def compute_irc_user_fullname(email):
|
||||
# type: (NonBinaryStr) -> NonBinaryStr
|
||||
@@ -3054,8 +3053,7 @@ def do_send_confirmation_email(invitee, referrer, body):
|
||||
"""
|
||||
activation_url = Confirmation.objects.get_link_for_object(invitee, host=referrer.realm.host)
|
||||
context = {'referrer': referrer, 'custom_body': body, 'activate_url': activation_url}
|
||||
send_email('zerver/emails/invitation', invitee.email, from_address=settings.ZULIP_ADMINISTRATOR.split()[-1],
|
||||
context=context)
|
||||
send_email('zerver/emails/invitation', invitee.email, from_address=FromAddress.SUPPORT, context=context)
|
||||
|
||||
def is_inactive(email):
|
||||
# type: (Text) -> None
|
||||
|
||||
@@ -8,7 +8,7 @@ from django.template import loader
|
||||
from django.utils.timezone import now as timezone_now
|
||||
from zerver.decorator import statsd_increment
|
||||
from zerver.lib.send_email import send_future_email, display_email, \
|
||||
send_email_from_dict
|
||||
send_email_from_dict, FromAddress
|
||||
from zerver.lib.queue import queue_json_publish
|
||||
from zerver.models import (
|
||||
Recipient,
|
||||
@@ -26,6 +26,7 @@ from zerver.models import (
|
||||
)
|
||||
|
||||
import datetime
|
||||
from email.utils import formataddr
|
||||
import re
|
||||
import subprocess
|
||||
import ujson
|
||||
@@ -398,7 +399,7 @@ def enqueue_welcome_emails(email, name):
|
||||
from_address = settings.WELCOME_EMAIL_SENDER['email']
|
||||
else:
|
||||
from_name = None
|
||||
from_address = settings.ZULIP_ADMINISTRATOR.split()[-1]
|
||||
from_address = FromAddress.SUPPORT
|
||||
|
||||
user_profile = get_user_profile_by_email(email)
|
||||
unsubscribe_link = one_click_unsubscribe_link(user_profile, "welcome")
|
||||
|
||||
@@ -10,6 +10,10 @@ import ujson
|
||||
|
||||
from typing import Any, Dict, Iterable, List, Mapping, Optional, Text
|
||||
|
||||
class FromAddress(object):
|
||||
SUPPORT = parseaddr(settings.ZULIP_ADMINISTRATOR)[1]
|
||||
NOREPLY = parseaddr(settings.NOREPLY_EMAIL_ADDRESS)[1]
|
||||
|
||||
def display_email(user):
|
||||
# type: (UserProfile) -> Text
|
||||
# Change to '%s <%s>' % (user.full_name, user.email) once
|
||||
@@ -33,7 +37,7 @@ def build_email(template_prefix, to_email, from_name=None, from_address=None,
|
||||
if from_name is None:
|
||||
from_name = "Zulip"
|
||||
if from_address is None:
|
||||
from_address = parseaddr(settings.NOREPLY_EMAIL_ADDRESS)[1]
|
||||
from_address = FromAddress.NOREPLY
|
||||
from_email = formataddr((from_name, from_address))
|
||||
reply_to = None
|
||||
if reply_to_email is not None:
|
||||
|
||||
@@ -36,7 +36,7 @@ from zerver.lib.actions import (
|
||||
get_stream,
|
||||
do_create_realm,
|
||||
)
|
||||
from zerver.lib.send_email import display_email, send_email, send_future_email
|
||||
from zerver.lib.send_email import display_email, send_email, send_future_email, FromAddress
|
||||
from zerver.lib.initial_password import initial_password
|
||||
from zerver.lib.actions import (
|
||||
do_deactivate_realm,
|
||||
@@ -743,7 +743,7 @@ so we didn't send them an invitation. We did send invitations to everyone else!"
|
||||
with self.settings(EMAIL_BACKEND='django.core.mail.backends.console.EmailBackend'):
|
||||
send_future_email(
|
||||
"zerver/emails/invitation_reminder", data["email"],
|
||||
from_address=settings.ZULIP_ADMINISTRATOR.split()[-1], context=context)
|
||||
from_address=FromAddress.SUPPORT, context=context)
|
||||
email_jobs_to_deliver = ScheduledJob.objects.filter(
|
||||
type=ScheduledJob.EMAIL,
|
||||
scheduled_timestamp__lte=timezone_now())
|
||||
|
||||
@@ -16,7 +16,7 @@ from zerver.models import UserProfile, Realm, PreregistrationUser, \
|
||||
name_changes_disabled, email_to_username, \
|
||||
completely_open, get_unique_open_realm, email_allowed_for_realm, \
|
||||
get_realm, get_realm_by_email_domain, get_system_bot
|
||||
from zerver.lib.send_email import send_email, send_email_to_user
|
||||
from zerver.lib.send_email import send_email, send_email_to_user, FromAddress
|
||||
from zerver.lib.events import do_events_register
|
||||
from zerver.lib.actions import do_change_password, do_change_full_name, do_change_is_admin, \
|
||||
do_activate_user, do_create_user, do_create_realm, set_default_streams, \
|
||||
@@ -313,7 +313,7 @@ def send_registration_completion_email(email, request, realm_creation=False):
|
||||
"""
|
||||
prereg_user = create_preregistration_user(email, request, realm_creation)
|
||||
activation_url = Confirmation.objects.get_link_for_object(prereg_user, host=request.get_host())
|
||||
send_email('zerver/emails/confirm_registration', email, from_address=settings.ZULIP_ADMINISTRATOR.split()[-1],
|
||||
send_email('zerver/emails/confirm_registration', email, from_address=FromAddress.SUPPORT,
|
||||
context={'activate_url': activation_url})
|
||||
if settings.DEVELOPMENT and realm_creation:
|
||||
request.session['confirmation_key'] = {'confirmation_key': activation_url.split('/')[-1]}
|
||||
|
||||
@@ -17,7 +17,7 @@ from zerver.lib.actions import do_change_password, \
|
||||
do_regenerate_api_key, do_change_avatar_fields, do_set_user_display_setting, \
|
||||
validate_email, do_change_user_email, do_start_email_change_process
|
||||
from zerver.lib.avatar import avatar_url
|
||||
from zerver.lib.send_email import send_email, display_email
|
||||
from zerver.lib.send_email import send_email, display_email, FromAddress
|
||||
from zerver.lib.i18n import get_available_language_codes
|
||||
from zerver.lib.response import json_success, json_error
|
||||
from zerver.lib.upload import upload_avatar_image
|
||||
@@ -52,7 +52,7 @@ def confirm_email_change(request, confirmation_key):
|
||||
'new_email': new_email,
|
||||
}
|
||||
send_email('zerver/emails/notify_change_in_email', old_email,
|
||||
from_address=settings.ZULIP_ADMINISTRATOR.split()[-1], context=context)
|
||||
from_address=FromAddress.SUPPORT, context=context)
|
||||
|
||||
ctx = {
|
||||
'confirmed': confirmed,
|
||||
|
||||
@@ -27,7 +27,7 @@ from zerver.lib.actions import do_send_confirmation_email, \
|
||||
render_incoming_message, do_update_embedded_data
|
||||
from zerver.lib.url_preview import preview as url_preview
|
||||
from zerver.lib.digest import handle_digest_email
|
||||
from zerver.lib.send_email import send_future_email, send_email_from_dict
|
||||
from zerver.lib.send_email import send_future_email, send_email_from_dict, FromAddress
|
||||
from zerver.lib.email_mirror import process_message as mirror_email
|
||||
from zerver.decorator import JsonableError
|
||||
from zerver.tornado.socket import req_redis_key
|
||||
@@ -180,7 +180,7 @@ class ConfirmationEmailWorker(QueueProcessingWorker):
|
||||
send_future_email(
|
||||
"zerver/emails/invitation_reminder",
|
||||
data["email"],
|
||||
from_address=settings.ZULIP_ADMINISTRATOR.split()[-1],
|
||||
from_address=FromAddress.SUPPORT,
|
||||
context=context,
|
||||
delay=datetime.timedelta(days=2))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user