Skip to content

Commit e0ddaf4

Browse files
committed
refactor(labrinth): allow setting SMTP port and TLS
This will help setting up labrinth for local development. You can now use a mock SMTP server such as smtp4dev. The TLS options will stay the same as before if set to `true`, and disabled when `false`. Depends on modrinth#2883
1 parent 447d3d1 commit e0ddaf4

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

apps/labrinth/.env.example

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ TURNSTILE_SECRET=none
8181
SMTP_USERNAME=none
8282
SMTP_PASSWORD=none
8383
SMTP_HOST=none
84+
SMTP_PORT=25
85+
SMTP_TLS=true
8486

8587
SITE_VERIFY_EMAIL_PATH=none
8688
SITE_RESET_PASSWORD_PATH=none
@@ -105,4 +107,4 @@ STRIPE_WEBHOOK_SECRET=none
105107

106108
ADITUDE_API_KEY=none
107109

108-
PYRO_API_KEY=none
110+
PYRO_API_KEY=none

apps/labrinth/src/auth/email/mod.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use lettre::message::header::ContentType;
22
use lettre::message::Mailbox;
33
use lettre::transport::smtp::authentication::Credentials;
4+
use lettre::transport::smtp::client::{Tls, TlsParameters};
45
use lettre::{Address, Message, SmtpTransport, Transport};
56
use thiserror::Error;
67

@@ -34,9 +35,20 @@ pub fn send_email_raw(
3435
let username = dotenvy::var("SMTP_USERNAME")?;
3536
let password = dotenvy::var("SMTP_PASSWORD")?;
3637
let host = dotenvy::var("SMTP_HOST")?;
38+
let port = dotenvy::var("SMTP_PORT")?.parse::<u16>().unwrap_or(25);
3739
let creds = Credentials::new(username, password);
40+
let tls_settings =
41+
if dotenvy::var("SMTP_TLS")?.parse::<bool>().unwrap_or(true) {
42+
Tls::Wrapper(TlsParameters::new(host.clone().into())?)
43+
} else {
44+
Tls::None
45+
};
3846

39-
let mailer = SmtpTransport::relay(&host)?.credentials(creds).build();
47+
let mailer = SmtpTransport::relay(&host)?
48+
.port(port)
49+
.tls(tls_settings)
50+
.credentials(creds)
51+
.build();
4052

4153
mailer.send(&email)?;
4254

apps/labrinth/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,8 @@ pub fn check_env_vars() -> bool {
455455
failed |= check_var::<String>("SMTP_USERNAME");
456456
failed |= check_var::<String>("SMTP_PASSWORD");
457457
failed |= check_var::<String>("SMTP_HOST");
458+
failed |= check_var::<u16>("SMTP_PORT");
459+
failed |= check_var::<bool>("SMTP_TLS");
458460

459461
failed |= check_var::<String>("SITE_VERIFY_EMAIL_PATH");
460462
failed |= check_var::<String>("SITE_RESET_PASSWORD_PATH");

0 commit comments

Comments
 (0)