| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package cz.senslog.analyzer.broker.email;
- import jakarta.mail.*;
- import jakarta.mail.internet.InternetAddress;
- import jakarta.mail.internet.MimeBodyPart;
- import jakarta.mail.internet.MimeMessage;
- import jakarta.mail.internet.MimeMultipart;
- import java.util.Map;
- import java.util.Properties;
- import static jakarta.mail.Message.RecipientType.TO;
- public class EmailServerConnection {
- private final EmailServerConfig config;
- public EmailServerConnection(EmailServerConfig config) {
- this.config = config;
- }
- private Session openSession(EmailServerConfig config) {
- Properties props = new Properties();
- props.put("mail.smtp.host", config.getSmtpHost());
- props.put("mail.smtp.port", config.getSmtpPort());
- props.put("mail.smtp.auth", "true");
- props.put("mail.smtp.starttls.enable", "true");
- props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
- Authenticator auth = new Authenticator() {
- protected PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(config.getUsername(), config.getPassword());
- }
- };
- return Session.getInstance(props, auth);
- }
- public void send(String content, Map<String, String> subjectVariables, EmailMessageConfig messageConfig) throws MessagingException {
- Session session = openSession(config);
- Message message = new MimeMessage(session);
- message.setFrom(new InternetAddress(messageConfig.getSenderEmail()));
- String recipients = String.join(",",messageConfig.getRecipientEmails());
- message.setRecipients(TO, InternetAddress.parse(recipients));
- String subjectPattern = messageConfig.getSubject();
- for (Map.Entry<String, String> varEntry : subjectVariables.entrySet()) {
- if (subjectPattern.contains(varEntry.getKey())) {
- subjectPattern = subjectPattern.replace(varEntry.getKey(), varEntry.getValue());
- }
- }
- message.setSubject(subjectPattern);
- MimeBodyPart mimeBodyPart = new MimeBodyPart();
- mimeBodyPart.setContent(content, "text/html;charset=UTF-8");
- Multipart multipart = new MimeMultipart();
- multipart.addBodyPart(mimeBodyPart);
- message.setContent(multipart);
- Transport.send(message);
- }
- }
|