Support authenticated SMTP

Closes (SYN-714) #1385

Signed-off-by: Daniel Dent <matrixcontrib@contactdaniel.net>
This commit is contained in:
Daniel Dent 2017-04-04 23:09:38 -07:00
parent a76886726b
commit 5058292537
2 changed files with 21 additions and 1 deletions

View file

@ -71,6 +71,15 @@ class EmailConfig(Config):
self.email_riot_base_url = email_config.get( self.email_riot_base_url = email_config.get(
"riot_base_url", None "riot_base_url", None
) )
self.email_smtp_user = email_config.get(
"smtp_user", None
)
self.email_smtp_pass = email_config.get(
"smtp_pass", None
)
self.require_transport_security = email_config.get(
"require_transport_security", False
)
if "app_name" in email_config: if "app_name" in email_config:
self.email_app_name = email_config["app_name"] self.email_app_name = email_config["app_name"]
else: else:
@ -91,10 +100,17 @@ class EmailConfig(Config):
# Defining a custom URL for Riot is only needed if email notifications # Defining a custom URL for Riot is only needed if email notifications
# should contain links to a self-hosted installation of Riot; when set # should contain links to a self-hosted installation of Riot; when set
# the "app_name" setting is ignored. # the "app_name" setting is ignored.
#
# If your SMTP server requires authentication, the optional smtp_user &
# smtp_pass variables should be used
#
#email: #email:
# enable_notifs: false # enable_notifs: false
# smtp_host: "localhost" # smtp_host: "localhost"
# smtp_port: 25 # smtp_port: 25
# smtp_user: "exampleusername"
# smtp_pass: "examplepassword"
# require_transport_security: False
# notif_from: "Your Friendly %(app)s Home Server <noreply@example.com>" # notif_from: "Your Friendly %(app)s Home Server <noreply@example.com>"
# app_name: Matrix # app_name: Matrix
# template_dir: res/templates # template_dir: res/templates

View file

@ -200,7 +200,11 @@ class Mailer(object):
yield sendmail( yield sendmail(
self.hs.config.email_smtp_host, self.hs.config.email_smtp_host,
raw_from, raw_to, multipart_msg.as_string(), raw_from, raw_to, multipart_msg.as_string(),
port=self.hs.config.email_smtp_port port=self.hs.config.email_smtp_port,
requireAuthentication=self.hs.config.email_smtp_user is not None,
username=self.hs.config.email_smtp_user,
password=self.hs.config.email_smtp_pass,
requireTransportSecurity=self.hs.config.require_transport_security
) )
@defer.inlineCallbacks @defer.inlineCallbacks