package ru.mcs.diary.common.email;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@Slf4j
@Service
@RequiredArgsConstructor
public class EmailService {
private final JavaMailSender mailSender;
@Value("${spring.mail.username:noreply@teacher-diary.local}")
private String fromEmail;
@Value("${app.mail.enabled:false}")
private boolean mailEnabled;
@Async
public void sendEmail(String to, String subject, String htmlContent) {
if (!mailEnabled) {
// В режиме разработки просто логируем
log.info("=== EMAIL (mock mode) ===");
log.info("To: {}", to);
log.info("Subject: {}", subject);
log.info("Content: {}", htmlContent);
log.info("=========================");
return;
}
try {
var message = mailSender.createMimeMessage();
var helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setFrom(fromEmail);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(htmlContent, true);
mailSender.send(message);
log.info("Email sent to: {}", to);
} catch (Exception e) {
log.error("Failed to send email to {}: {}", to, e.getMessage());
}
}
}