-use derive_more::Display;
use lettre::{
- transport::smtp::{authentication::Credentials, AsyncSmtpTransport},
AsyncTransport, Message, Tokio1Executor,
+ transport::smtp::{AsyncSmtpTransport, authentication::Credentials},
};
-use tracing::{event, Level};
+use tracing::{Level, event};
use crate::consts;
-#[derive(Debug, Display)]
+#[derive(Debug, thiserror::Error)]
pub enum Error {
- Parse(lettre::address::AddressError),
- Smtp(lettre::transport::smtp::Error),
- Email(lettre::error::Error),
-}
-
-impl From<lettre::address::AddressError> for Error {
- fn from(error: lettre::address::AddressError) -> Self {
- Error::Parse(error)
- }
-}
+ #[error("Parse error: {0}")]
+ Parse(#[from] lettre::address::AddressError),
-impl From<lettre::transport::smtp::Error> for Error {
- fn from(error: lettre::transport::smtp::Error) -> Self {
- Error::Smtp(error)
- }
-}
+ #[error("SMTP error: {0}")]
+ Smtp(#[from] lettre::transport::smtp::Error),
-impl From<lettre::error::Error> for Error {
- fn from(error: lettre::error::Error) -> Self {
- Error::Email(error)
- }
+ #[error("Email error: {0}")]
+ Email(#[from] lettre::error::Error),
}
-
pub async fn send_email(
email: &str,
message: &str,