commit 2c2276c5bb2fa3a1c8078b1d7ea6185bb769e4e9
parent 026f9da035dcbf5ff12387600162841f94b47154
Author: Daniel GarcĂa <dani-garcia@users.noreply.github.com>
Date: Tue, 27 Aug 2019 20:21:23 +0200
Merge pull request #585 from ViViDboarder/mail-auth-over-insecure
Allow explicitly defined smtp auth mechansim
Diffstat:
3 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/.env.template b/.env.template
@@ -149,3 +149,4 @@
# SMTP_SSL=true
# SMTP_USERNAME=username
# SMTP_PASSWORD=password
+# SMTP_AUTH_MECHANISM="Plain"
diff --git a/src/config.rs b/src/config.rs
@@ -345,6 +345,8 @@ make_config! {
smtp_username: String, true, option;
/// Password
smtp_password: Pass, true, option;
+ /// Json form auth mechanism |> Defaults for ssl is "Plain" and "Login" and nothing for non-ssl connections. Possible values: ["Plain", "Login", "Xoauth2"]
+ smtp_auth_mechanism: String, true, option;
},
}
diff --git a/src/mail.rs b/src/mail.rs
@@ -1,4 +1,5 @@
use lettre::smtp::authentication::Credentials;
+use lettre::smtp::authentication::Mechanism as SmtpAuthMechanism;
use lettre::smtp::ConnectionReuseParameters;
use lettre::{ClientSecurity, ClientTlsParameters, SmtpClient, SmtpTransport, Transport};
use lettre_email::{EmailBuilder, MimeMultipartType, PartBuilder};
@@ -39,6 +40,17 @@ fn mailer() -> SmtpTransport {
_ => smtp_client,
};
+ let smtp_client = match &CONFIG.smtp_auth_mechanism() {
+ Some(auth_mechanism_json) => {
+ let auth_mechanism = serde_json::from_str::<SmtpAuthMechanism>(&auth_mechanism_json);
+ match auth_mechanism {
+ Ok(auth_mechanism) => smtp_client.authentication_mechanism(auth_mechanism),
+ Err(_) => panic!("Failure to parse mechanism. Is it proper Json? Eg. `\"Plain\"` not `Plain`"),
+ }
+ },
+ _ => smtp_client,
+ };
+
smtp_client
.smtp_utf8(true)
.connection_reuse(ConnectionReuseParameters::NoReuse)