diff --git a/crates/cloud/Cargo.toml b/crates/cloud/Cargo.toml index 66f6222b..c16656e1 100644 --- a/crates/cloud/Cargo.toml +++ b/crates/cloud/Cargo.toml @@ -43,3 +43,6 @@ prometheus = "0.13.3" aws-sdk-s3 = "0.31.2" aws-credential-types = "0.56.1" aws-config = "0.56.1" + +[dev-dependencies] +lettre = {version = "0.10.0-rc.4", features = ["file-transport", "builder"]} diff --git a/crates/cloud/src/errors.rs b/crates/cloud/src/errors.rs index 9ab31fbc..9ee2dd40 100644 --- a/crates/cloud/src/errors.rs +++ b/crates/cloud/src/errors.rs @@ -11,7 +11,7 @@ pub enum InternalError { S3ContentError, TorNodeListFetchError(reqwest::Error), ActixMessageError(actix::MailboxError), - SendEmailError(lettre::transport::smtp::Error), + SendEmailError, EmailBuildError, Base64DecodeError(base64::DecodeError), ThumbnailDecodeError(image::ImageError), diff --git a/crates/cloud/src/utils.rs b/crates/cloud/src/utils.rs index 8fc58680..ef357e49 100644 --- a/crates/cloud/src/utils.rs +++ b/crates/cloud/src/utils.rs @@ -4,7 +4,7 @@ use actix_web::HttpRequest; use futures::TryStreamExt; use lazy_static::lazy_static; use lettre::{Message, SmtpTransport, Transport}; -use log::error; +use log::{error, warn}; use lru::LruCache; use mongodb::{bson::doc, Collection}; use netsblox_cloud_common::{ @@ -298,17 +298,21 @@ pub(crate) async fn get_authorized_host( Ok(host) } -pub(crate) fn send_email( - mailer: &SmtpTransport, +pub(crate) fn send_email( + mailer: &T, email: impl TryInto, -) -> Result<(), UserError> { +) -> Result<(), UserError> +where + ::Error: std::fmt::Debug, +{ let message = email .try_into() .map_err(|_err| InternalError::EmailBuildError)?; - mailer - .send(&message) - .map_err(InternalError::SendEmailError)?; + mailer.send(&message).map_err(|err| { + warn!("Unable to send email: {:?}", err); + InternalError::SendEmailError + })?; Ok(()) }