-use crate::settings::structs::Settings;
+use crate::{settings::structs::Settings, LemmyError};
use lettre::{
message::{header, Mailbox, MultiPart, SinglePart},
transport::smtp::{
to_username: &str,
html: &str,
settings: &Settings,
-) -> Result<(), String> {
- let email_config = settings.email.to_owned().ok_or("no_email_setup")?;
+) -> Result<(), LemmyError> {
+ let email_config = settings
+ .email
+ .to_owned()
+ .ok_or_else(|| LemmyError::from_message("no_email_setup"))?;
let domain = settings.hostname.to_owned();
let (smtp_server, smtp_port) = {
let email_and_port = email_config.smtp_server.split(':').collect::<Vec<&str>>();
+ if email_and_port.len() == 1 {
+ return Err(LemmyError::from_message(
+ "email.smtp_server needs a port, IE smtp.xxx.com:465",
+ ));
+ }
+
(
email_and_port[0],
email_and_port[1]
match result {
Ok(_) => Ok(()),
- Err(e) => Err(e.to_string()),
+ Err(e) => Err(LemmyError::from(e).with_message("email_send_failed")),
}
}