smtp_password: "string"
# Address to send emails from, eg noreply@your-instance.com
smtp_from_address: "noreply@example.com"
- # Whether or not smtp connections should use tls
- use_tls: true
+ # Whether or not smtp connections should use tls. Can be none, tls, or starttls
+ tls_type: "none"
}
# Parameters for automatic configuration of new instance (only used at first start)
setup: {
use crate::{settings::structs::Settings, LemmyError};
use lettre::{
message::{header, Mailbox, MultiPart, SinglePart},
- transport::smtp::{
- authentication::Credentials,
- client::{Tls, TlsParameters},
- extension::ClientId,
- },
+ transport::smtp::{authentication::Credentials, extension::ClientId},
Address,
Message,
SmtpTransport,
// don't worry about 'dangeous'. it's just that leaving it at the default configuration
// is bad.
- let mut builder = SmtpTransport::builder_dangerous(smtp_server).port(smtp_port);
// Set the TLS
- if email_config.use_tls {
- let tls_config = TlsParameters::new(smtp_server.to_string()).expect("the TLS backend is happy");
- builder = builder.tls(Tls::Wrapper(tls_config));
- }
+ let builder_dangerous = SmtpTransport::builder_dangerous(smtp_server).port(smtp_port);
+
+ let mut builder = match email_config.tls_type.as_str() {
+ "starttls" => SmtpTransport::starttls_relay(smtp_server)?,
+ "tls" => SmtpTransport::relay(smtp_server)?,
+ _ => builder_dangerous,
+ };
// Set the creds if they exist
if let (Some(username), Some(password)) = (email_config.smtp_login, email_config.smtp_password) {
pub pool_size: u32,
}
-#[derive(Debug, Deserialize, Serialize, Clone, Document)]
+#[derive(Debug, Deserialize, Serialize, Clone, Document, SmartDefault)]
pub struct EmailConfig {
/// Hostname and port of the smtp server
#[doku(example = "localhost:25")]
#[doku(example = "noreply@example.com")]
/// Address to send emails from, eg "noreply@your-instance.com"
pub smtp_from_address: String,
- /// Whether or not smtp connections should use tls
- pub use_tls: bool,
+ /// Whether or not smtp connections should use tls. Can be none, tls, or starttls
+ #[default("none")]
+ #[doku(example = "none")]
+ pub tls_type: String,
}
#[derive(Debug, Deserialize, Serialize, Clone, SmartDefault, Document)]