2025-07-31 15:07:18 +07:00
|
|
|
use crate::enviroment::ENV;
|
2025-02-16 01:09:55 +07:00
|
|
|
use lettre::message::Mailbox;
|
|
|
|
|
use lettre::transport::smtp::authentication::Credentials;
|
|
|
|
|
use lettre::{Message, SmtpTransport, Transport};
|
2025-03-13 23:40:16 +07:00
|
|
|
use std::error::Error;
|
2025-02-16 01:09:55 +07:00
|
|
|
|
|
|
|
|
pub fn send_email(
|
|
|
|
|
to: &str,
|
|
|
|
|
subject: &str,
|
|
|
|
|
body: &str,
|
2025-03-13 23:40:16 +07:00
|
|
|
) -> Result<(), Box<dyn Error>> {
|
2025-07-31 15:07:18 +07:00
|
|
|
let env = &ENV;
|
|
|
|
|
let host = env.smtp_host.clone();
|
|
|
|
|
let sender_email = env.smtp_email.clone();
|
|
|
|
|
let sender_name = env.smtp_name.clone();
|
|
|
|
|
let sender_password = env.smtp_password.clone();
|
2025-02-16 01:09:55 +07:00
|
|
|
let recipient_email = to;
|
|
|
|
|
let email = Message::builder()
|
|
|
|
|
.from(Mailbox::new(
|
|
|
|
|
Some(sender_name.replace("-", " ")),
|
|
|
|
|
sender_email.parse()?,
|
|
|
|
|
))
|
|
|
|
|
.to(recipient_email.parse()?)
|
|
|
|
|
.subject(subject)
|
|
|
|
|
.body(body.to_string())?;
|
|
|
|
|
let smtp_credentials =
|
|
|
|
|
Credentials::new(sender_email, sender_password.replace("-", " "));
|
2025-03-13 23:40:16 +07:00
|
|
|
let mailer = SmtpTransport::relay(&host)?
|
2025-02-16 01:09:55 +07:00
|
|
|
.credentials(smtp_credentials)
|
|
|
|
|
.build();
|
|
|
|
|
match mailer.send(&email) {
|
2025-07-21 21:29:04 +07:00
|
|
|
Ok(_) => Ok(()),
|
|
|
|
|
Err(e) => Err(Box::new(e)),
|
2025-02-16 01:09:55 +07:00
|
|
|
}
|
|
|
|
|
}
|