replace dep javax.mail to spring-boot-starter-mail, add actuator, fix logging

This commit is contained in:
RM
2026-09-30 13:13:05 +03:00
parent 102a897571
commit 17d410683b
5 changed files with 33 additions and 27 deletions

View File

@@ -72,15 +72,18 @@
<version>5.4.0</version> <version>5.4.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.sun.mail</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>javax.mail</artifactId> <artifactId>spring-boot-starter-mail</artifactId>
<version>1.5.5</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@@ -60,7 +60,7 @@ public class EmailService {
return; return;
} }
List<Emails> alreadyProcessed = emailsRepository.findTop10ByOrderByIdDesc(); List<Emails> alreadyProcessed = emailsRepository.findTop10ByOrderByIdDesc();
List<EmailData> emailData = new ReceiveEmailService("imap.gmail.com", 993, params.getFrom(), params.getToken(), params.getSpecialEmail()) List<EmailData> emailData = new ReceiveEmailService("imap.gmail.com", 993, params.getFrom(), params.getToken(), params.getSpecialEmail(), log)
.downloadEmails(alreadyProcessed); .downloadEmails(alreadyProcessed);
int sendLetters = 0; int sendLetters = 0;
log.error("Extracted letters = {}", emailData.size()); log.error("Extracted letters = {}", emailData.size());

View File

@@ -1,14 +1,15 @@
package com.pledge.torgi.service; package com.pledge.torgi.service;
import com.pledge.torgi.model.Emails; import com.pledge.torgi.model.Emails;
import com.sun.mail.imap.IMAPMessage; import jakarta.mail.internet.MimeMessage;
import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.util.IOUtils; import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import jakarta.mail.*;
import jakarta.mail.internet.InternetAddress;
import jakarta.mail.internet.MimeMultipart;
import org.slf4j.Logger;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMultipart;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@@ -21,14 +22,16 @@ public class ReceiveEmailService {
private String password; private String password;
private String specialEmail; private String specialEmail;
private String protocol = "imaps"; private String protocol = "imaps";
private Logger logger;
private final Properties prop; private final Properties prop;
public ReceiveEmailService(String host, int port, String username, String password, String specialEmail) { public ReceiveEmailService(String host, int port, String username, String password, String specialEmail, Logger logger) {
prop = getServerProperties(host, port); prop = getServerProperties(host, port);
this.username = username; this.username = username;
this.password = password; this.password = password;
this.specialEmail = specialEmail; this.specialEmail = specialEmail;
this.logger = logger;
} }
public List<EmailData> downloadEmails(List<Emails> alreadyProcessed) { public List<EmailData> downloadEmails(List<Emails> alreadyProcessed) {
@@ -60,7 +63,7 @@ public class ReceiveEmailService {
continue; continue;
} }
String messageID = ((IMAPMessage) msg).getMessageID(); String messageID = ((MimeMessage) msg).getMessageID();
if (alreadyProcessed.stream().anyMatch(processed -> processed.getMailId().equals(messageID))) { if (alreadyProcessed.stream().anyMatch(processed -> processed.getMailId().equals(messageID))) {
continue; continue;
} }
@@ -75,16 +78,15 @@ public class ReceiveEmailService {
List<String> replyMails = new ArrayList<>(Arrays.stream(toList).map(addr -> ((InternetAddress) addr).getAddress()) List<String> replyMails = new ArrayList<>(Arrays.stream(toList).map(addr -> ((InternetAddress) addr).getAddress())
.filter(email -> !email.equals(specialEmail)) .filter(email -> !email.equals(specialEmail))
.toList()); .toList());
replyMails.add(((InternetAddress)((IMAPMessage) msg).getSender()).getAddress()); replyMails.add(((InternetAddress)((MimeMessage) msg).getSender()).getAddress());
EmailData data = new EmailData(); EmailData data = new EmailData();
data.setEmailId(messageID); data.setEmailId(messageID);
data.setFile(wb); data.setFile(wb);
data.setEmails(String.join(",", replyMails)); data.setEmails(String.join(",", replyMails));
System.out.println("Emails for reply: " + data.getEmails()); logger.debug("Emails for reply: {}", data.getEmails());
result.add(data); result.add(data);
} catch (Exception ex) { } catch (Exception ex) {
System.out.println("No provider for protocol: " + protocol); logger.error("Error during send mail", ex);
ex.printStackTrace();
} }
} }
@@ -92,11 +94,9 @@ public class ReceiveEmailService {
folderInbox.close(false); folderInbox.close(false);
store.close(); store.close();
} catch (NoSuchProviderException ex) { } catch (NoSuchProviderException ex) {
System.out.println("No provider for protocol: " + protocol); logger.error("No provider for protocol: {}", protocol);
ex.printStackTrace();
} catch (MessagingException ex) { } catch (MessagingException ex) {
System.out.println("Could not connect to the message store"); logger.error("Could not connect to the message store", ex);
ex.printStackTrace();
} }
return result; return result;
} }

View File

@@ -1,13 +1,14 @@
package com.pledge.torgi.service; package com.pledge.torgi.service;
import javax.activation.DataHandler; import jakarta.activation.DataHandler;
import javax.activation.DataSource; import jakarta.activation.DataSource;
import javax.activation.FileDataSource; import jakarta.activation.FileDataSource;
import javax.mail.*; import jakarta.mail.*;
import javax.mail.internet.InternetAddress; import jakarta.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart; import jakarta.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage; import jakarta.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart; import jakarta.mail.internet.MimeMultipart;
import java.io.File; import java.io.File;
import java.util.Properties; import java.util.Properties;

View File

@@ -13,3 +13,5 @@ spring.servlet.multipart.max-request-size=20MB
server.tomcat.connection-timeout=300000 server.tomcat.connection-timeout=300000
server.tomcat.keep-alive-timeout=300000 server.tomcat.keep-alive-timeout=300000
server.connection-timeout=300000 server.connection-timeout=300000
management.endpoints.web.exposure.include=health,metrics,prometheus
management.endpoint.health.show-details=always