diff --git a/config_sample.toml b/config_sample.toml index 4c6a684..9a9e7ec 100644 --- a/config_sample.toml +++ b/config_sample.toml @@ -17,6 +17,7 @@ transport = "File" #or Smtp from = "from@address.cz" path = "Maildir" #server = "smtp.server.cz" +#hello_name = "fqdn.server.cz" #port = 25 #user = "user" #password = "password" diff --git a/src/backend/mail.rs b/src/backend/mail.rs index 296a51e..d72fdd3 100644 --- a/src/backend/mail.rs +++ b/src/backend/mail.rs @@ -17,6 +17,7 @@ cfg_if! { if #[cfg(feature = "ssr")] { use lettre::{AsyncSmtpTransport, AsyncFileTransport, AsyncTransport, Tokio1Executor}; use lettre::transport::smtp::client::{Tls, TlsParameters}; use lettre::transport::smtp::authentication::Credentials; + use lettre::transport::smtp::extension::ClientId; use std::ops::Add; pub async fn message_for_type(msg_type: &MessageType, pool: &PgPool) -> Result { @@ -137,6 +138,11 @@ cfg_if! { if #[cfg(feature = "ssr")] { } else { transport }; + let transport = if let Some(hello) = self.hello_name() { + transport.hello_name(ClientId::Domain(hello.to_string())) + } else { + transport + }; if self.user().is_some() && self.password().is_some() { let cred = Credentials::new(self.user().clone().unwrap(), self.password().clone().unwrap()); transport.credentials(cred).build().send(msg.build_mail(self.from().to_string())?).await?; diff --git a/src/config.rs b/src/config.rs index 87961bf..fa41e98 100644 --- a/src/config.rs +++ b/src/config.rs @@ -65,6 +65,7 @@ pub struct Mailing { from: String, path: Option, server: Option, + hello_name: Option, port: Option, user: Option, password: Option, @@ -86,6 +87,9 @@ impl Mailing { pub fn server(&self) -> &Option { &self.server } + pub fn hello_name(&self) -> &Option { + &self.hello_name + } pub fn port(&self) -> Option { self.port }