From 93f40ecdf2a05716edf85b1305f4e460aa8ea885 Mon Sep 17 00:00:00 2001 From: Zhenyuan Gong <79224316+Rexezuge@users.noreply.github.com> Date: Mon, 31 Oct 2022 14:06:37 -0400 Subject: [PATCH 1/7] FEAT: Rewrite EmailReceiver --- .../server/imap/EmailReceiver.java | 142 ++---------------- .../imap/EmailReceiverImplementation.java | 119 +++++++++++++++ .../server/imap/EmailReceiverProtocol.java | 15 ++ .../easycontact/server/imap/ExampleMain.java | 8 + 4 files changed, 151 insertions(+), 133 deletions(-) create mode 100644 EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java create mode 100644 EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverProtocol.java create mode 100644 EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiver.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiver.java index 8700afa..0f9ab2f 100644 --- a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiver.java +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiver.java @@ -1,138 +1,14 @@ package app.easycontact.server.imap; -import javax.mail.*; -import java.util.Properties; +import lombok.NonNull; +import lombok.experimental.SuperBuilder; -public class EmailReceiver { +@SuperBuilder +public abstract class EmailReceiver { + @NonNull String userName; + @NonNull String userPassword; + @NonNull String serverName; + @NonNull String serverPort; - /** - * Test downloading e-mail messages - */ - public static void main(String[] args) { - // for IMAP - String protocol = "imap"; - String host = "mail.rpi.edu"; - String port = "993"; - - String userName = "usrName"; - String password = "password"; - - EmailReceiver receiver = new EmailReceiver(); - receiver.downloadEmails(protocol, host, port, userName, password); - } - - /** - * Returns a Properties object which is configured for a POP3/IMAP server - * - * @param protocol either "imap" or "pop3" - * @param host - * @param port - * @return a Properties object - */ - private Properties getServerProperties(String protocol, String host, String port) { - Properties properties = new Properties(); - - // server setting - properties.put(String.format("mail.%s.host", protocol), host); - properties.put(String.format("mail.%s.port", protocol), port); - - // SSL setting - properties.setProperty(String.format("mail.%s.socketFactory.class", protocol), "javax.net.ssl.SSLSocketFactory"); - properties.setProperty(String.format("mail.%s.socketFactory.fallback", protocol), "false"); - properties.setProperty(String.format("mail.%s.socketFactory.port", protocol), String.valueOf(port)); - - return properties; - } - - /** - * Downloads new messages and fetches details for each message. - * - * @param protocol - * @param host - * @param port - * @param userName - * @param password - */ - public void downloadEmails(String protocol, String host, String port, String userName, String password) { - Properties properties = getServerProperties(protocol, host, port); - Session session = Session.getDefaultInstance(properties); - - try { - // connects to the message store - Store store = session.getStore(protocol); - store.connect(userName, password); - - // opens the inbox folder - Folder folderInbox = store.getFolder("INBOX"); - folderInbox.open(Folder.READ_ONLY); - - // fetches new messages from server - Message[] messages = folderInbox.getMessages(); - - for (int i = 0; i < messages.length; i++) { - Message msg = messages[i]; - Address[] fromAddress = msg.getFrom(); - String from = fromAddress[0].toString(); - String subject = msg.getSubject(); - String toList = parseAddresses(msg.getRecipients(Message.RecipientType.TO)); - String ccList = parseAddresses(msg.getRecipients(Message.RecipientType.CC)); - String sentDate = msg.getSentDate().toString(); - - String contentType = msg.getContentType(); - String messageContent = ""; - - if (contentType.contains("text/plain") || contentType.contains("text/html")) { - try { - Object content = msg.getContent(); - if (content != null) { - messageContent = content.toString(); - } - } catch (Exception ex) { - messageContent = "[Error downloading content]"; - ex.printStackTrace(); - } - } - - // print out details of each message - System.out.println("Message #" + (i + 1) + ":"); - System.out.println("\t From: " + from); - System.out.println("\t To: " + toList); - System.out.println("\t CC: " + ccList); - System.out.println("\t Subject: " + subject); - System.out.println("\t Sent Date: " + sentDate); - System.out.println("\t Message: " + messageContent); - } - - // disconnect - folderInbox.close(false); - store.close(); - } catch (NoSuchProviderException ex) { - System.out.println("No provider for protocol: " + protocol); - ex.printStackTrace(); - } catch (MessagingException ex) { - System.out.println("Could not connect to the message store"); - ex.printStackTrace(); - } - } - - /** - * Returns a list of addresses in String format separated by comma - * - * @param address an array of Address objects - * @return a string represents a list of addresses - */ - private String parseAddresses(Address[] address) { - String listAddress = ""; - - if (address != null) { - for (int i = 0; i < address.length; i++) { - listAddress += address[i].toString() + ", "; - } - } - if (listAddress.length() > 1) { - listAddress = listAddress.substring(0, listAddress.length() - 2); - } - - return listAddress; - } + public abstract void downloadEmails(String folder); } diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java new file mode 100644 index 0000000..1e6e9fa --- /dev/null +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java @@ -0,0 +1,119 @@ +package app.easycontact.server.imap; + +import lombok.NonNull; +import lombok.experimental.SuperBuilder; + +import javax.mail.*; +import java.util.Properties; + +@SuperBuilder +public final class EmailReceiverImplementation extends EmailReceiver { + /** + * Downloads new messages and fetches details for each message. + */ + public void downloadEmails(@NonNull String folder) { + Properties properties = getServerProperties(EmailReceiverProtocol.IMAP, serverName, serverPort); + Session session = Session.getDefaultInstance(properties); + + try { + // connects to the message store + Store store = session.getStore(EmailReceiverProtocol.IMAP.toString()); + store.connect(userName, userPassword); + + // opens the inbox folder + Folder folderInbox = store.getFolder(folder); + folderInbox.open(Folder.READ_ONLY); + + // fetches new messages from server + Message[] messages = folderInbox.getMessages(); + + for (int i = 0; i < messages.length; i++) { + Message msg = messages[i]; + Address[] fromAddress = msg.getFrom(); + String from = fromAddress[0].toString(); + String subject = msg.getSubject(); + String toList = parseAddresses(msg.getRecipients(Message.RecipientType.TO)); + String ccList = parseAddresses(msg.getRecipients(Message.RecipientType.CC)); + String sentDate = msg.getSentDate().toString(); + + String contentType = msg.getContentType(); + String messageContent = ""; + + if (contentType.contains("text/plain") || contentType.contains("text/html")) { + try { + Object content = msg.getContent(); + if (content != null) { + messageContent = content.toString(); + } + } catch (Exception ex) { + messageContent = "[Error downloading content]"; + ex.printStackTrace(); + } + } + + // print out details of each message + System.out.println("Message #" + (i + 1) + ":"); + System.out.println("\t From: " + from); + System.out.println("\t To: " + toList); + System.out.println("\t CC: " + ccList); + System.out.println("\t Subject: " + subject); + System.out.println("\t Sent Date: " + sentDate); + System.out.println("\t Message: " + messageContent); + } + + // disconnect + folderInbox.close(false); + store.close(); + } catch (NoSuchProviderException ex) { + System.out.println("No provider for protocol: " + EmailReceiverProtocol.IMAP); + ex.printStackTrace(); + } catch (MessagingException ex) { + System.out.println("Could not connect to the message store"); + ex.printStackTrace(); + } + } + + /** + * Returns a list of addresses in String format separated by comma + * + * @param address an array of Address objects + * @return a string represents a list of addresses + */ + private String parseAddresses(Address[] address) { + String listAddress = ""; + + if (address != null) { + for (int i = 0; i < address.length; i++) { + listAddress += address[i].toString() + ", "; + } + } + if (listAddress.length() > 1) { + listAddress = listAddress.substring(0, listAddress.length() - 2); + } + + return listAddress; + } + + /** + * Returns a Properties object which is configured for a POP3/IMAP server + * + * @param protocol either "imap" or "pop3" + * @param host + * @param port + * @return a Properties object + */ + private Properties getServerProperties(EmailReceiverProtocol protocol, String host, String port) { + Properties properties = new Properties(); + + // server setting + properties.put(String.format("mail.%s.host", protocol), host); + properties.put(String.format("mail.%s.port", protocol), port); + + // SSL setting + properties.setProperty(String.format("mail.%s.socketFactory.class", protocol), "javax.net.ssl.SSLSocketFactory"); + properties.setProperty(String.format("mail.%s.socketFactory.fallback", protocol), "false"); + properties.setProperty(String.format("mail.%s.socketFactory.port", protocol), String.valueOf(port)); + + return properties; + } +} diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverProtocol.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverProtocol.java new file mode 100644 index 0000000..f235cdb --- /dev/null +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverProtocol.java @@ -0,0 +1,15 @@ +package app.easycontact.server.imap; + +public enum EmailReceiverProtocol { + IMAP("imap"), POP3("pop3"); + private final String enumText; + + EmailReceiverProtocol(final String enumText) { + this.enumText = enumText; + } + + @Override + public String toString() { + return this.enumText; + } +} diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java new file mode 100644 index 0000000..579ff59 --- /dev/null +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java @@ -0,0 +1,8 @@ +package app.easycontact.server.imap; + +public class ExampleMain { + public static void main(String[] args) { + EmailReceiver emailReceiver = EmailReceiverImplementation.builder().serverName("mail.rpi.edu").serverPort("993").userName("username").userPassword("password").build(); + emailReceiver.downloadEmails("INBOX"); + } +} From faa2df7b76980516016e39cc25a88dca2837ca29 Mon Sep 17 00:00:00 2001 From: Zhenyuan Gong <79224316+Rexezuge@users.noreply.github.com> Date: Tue, 1 Nov 2022 13:19:06 -0400 Subject: [PATCH 2/7] FEAT: New `Email` Class --- .../app/easycontact/server/imap/Email.java | 16 ++++++++++++++++ .../server/imap/EmailImplementation.java | 9 +++++++++ .../imap/EmailReceiverImplementation.java | 19 ++++++++++--------- .../easycontact/server/imap/ExampleMain.java | 2 +- 4 files changed, 36 insertions(+), 10 deletions(-) create mode 100644 EasyContact.app/server/src/main/java/app/easycontact/server/imap/Email.java create mode 100644 EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailImplementation.java diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/Email.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/Email.java new file mode 100644 index 0000000..259ff71 --- /dev/null +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/Email.java @@ -0,0 +1,16 @@ +package app.easycontact.server.imap; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +@SuperBuilder +@Data +public abstract class Email { + public final long id; + public final String from; + public final String subject; + public final String toList; + public final String ccList; + public final String sendDate; + public final String message; +} diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailImplementation.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailImplementation.java new file mode 100644 index 0000000..cefa347 --- /dev/null +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailImplementation.java @@ -0,0 +1,9 @@ +package app.easycontact.server.imap; + +import lombok.Data; +import lombok.experimental.SuperBuilder; + +@SuperBuilder +@Data +public class EmailImplementation extends Email { +} diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java index 1e6e9fa..d78eafc 100644 --- a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java @@ -27,7 +27,7 @@ public void downloadEmails(@NonNull String folder) { // fetches new messages from server Message[] messages = folderInbox.getMessages(); - for (int i = 0; i < messages.length; i++) { + for (int i = 0; i < messages.length; ++i) { Message msg = messages[i]; Address[] fromAddress = msg.getFrom(); String from = fromAddress[0].toString(); @@ -51,14 +51,15 @@ public void downloadEmails(@NonNull String folder) { } } - // print out details of each message - System.out.println("Message #" + (i + 1) + ":"); - System.out.println("\t From: " + from); - System.out.println("\t To: " + toList); - System.out.println("\t CC: " + ccList); - System.out.println("\t Subject: " + subject); - System.out.println("\t Sent Date: " + sentDate); - System.out.println("\t Message: " + messageContent); + // create a Email object for each message + Email email = EmailImplementation.builder().id(i).from(from).toList(toList).ccList(ccList).subject(subject).sendDate(sentDate).message(messageContent).build(); + System.out.println("Message #" + email.getId() + ":"); + System.out.println("\t From: " + email.getFrom()); + System.out.println("\t To: " + email.getToList()); + System.out.println("\t CC: " + email.getCcList()); + System.out.println("\t Subject: " + email.getCcList()); + System.out.println("\t Sent Date: " + email.getSendDate()); + System.out.println("\t Message: " + email.getMessage()); } // disconnect diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java index 579ff59..8323610 100644 --- a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java @@ -2,7 +2,7 @@ public class ExampleMain { public static void main(String[] args) { - EmailReceiver emailReceiver = EmailReceiverImplementation.builder().serverName("mail.rpi.edu").serverPort("993").userName("username").userPassword("password").build(); + EmailReceiver emailReceiver = EmailReceiverImplementation.builder().serverName("mail.rpi.edu").serverPort("993").userName("gongz3").userPassword("DO7gTmQVDeTjHWfU").build(); emailReceiver.downloadEmails("INBOX"); } } From cbef1c73057c53c8207ee102d6624f68ee3d38db Mon Sep 17 00:00:00 2001 From: Zhenyuan Gong <79224316+Rexezuge@users.noreply.github.com> Date: Tue, 8 Nov 2022 16:24:04 -0500 Subject: [PATCH 3/7] FEAT: 1 --- .../java/app/easycontact/server/imap/EmailImplementation.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailImplementation.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailImplementation.java index cefa347..24c002b 100644 --- a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailImplementation.java +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailImplementation.java @@ -5,5 +5,5 @@ @SuperBuilder @Data -public class EmailImplementation extends Email { +public final class EmailImplementation extends Email { } From 00d598cd3430a0beef8a5b770eb383fdc1d2e0bd Mon Sep 17 00:00:00 2001 From: Zhenyuan Gong <79224316+Rexezuge@users.noreply.github.com> Date: Thu, 10 Nov 2022 14:34:33 -0500 Subject: [PATCH 4/7] FEAT: Add Junit Test For Email --- EasyContact.app/server/pom.xml | 114 +++++++++--------- .../easycontact/server/imap/EmailTest.java | 64 ++++++++++ 2 files changed, 124 insertions(+), 54 deletions(-) create mode 100644 EasyContact.app/server/src/test/java/app/easycontact/server/imap/EmailTest.java diff --git a/EasyContact.app/server/pom.xml b/EasyContact.app/server/pom.xml index 932ceb3..9efb071 100644 --- a/EasyContact.app/server/pom.xml +++ b/EasyContact.app/server/pom.xml @@ -1,56 +1,62 @@ - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.7.4 - - - app.EasyContact.server - EasyContact.server - 0.0.1-SNAPSHOT - EasyContact.server - EasyContact Backend Java Server - - 17 - - - - org.springframework.boot - spring-boot-starter-web - - - org.projectlombok - lombok - true - - - org.springframework.boot - spring-boot-starter-test - test - - - com.sun.mail - javax.mail - 1.6.2 - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - org.projectlombok - lombok - - - - - - + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.7.4 + + + app.EasyContact.server + EasyContact.server + 0.0.1-SNAPSHOT + EasyContact.server + EasyContact Backend Java Server + + 17 + + + + org.springframework.boot + spring-boot-starter-web + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + com.sun.mail + javax.mail + 1.6.2 + + + org.junit.jupiter + junit-jupiter-engine + 5.9.1 + test + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + diff --git a/EasyContact.app/server/src/test/java/app/easycontact/server/imap/EmailTest.java b/EasyContact.app/server/src/test/java/app/easycontact/server/imap/EmailTest.java new file mode 100644 index 0000000..70dca21 --- /dev/null +++ b/EasyContact.app/server/src/test/java/app/easycontact/server/imap/EmailTest.java @@ -0,0 +1,64 @@ +package app.easycontact.server.imap; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class EmailTest { + final long id = 1; + final String from = "from@example.com"; + final String toList = "to@example.com"; + final String ccList = "cc@example.com"; + final String subject = "Example Subject"; + final String sendDate = "Example Date"; + final String message = "Example Message"; + Email email; + + @BeforeEach + void setUp() { + email = EmailImplementation.builder().id(id).from(from).toList(toList).ccList(ccList).subject(subject).sendDate(sendDate).message(message).build(); + } + + @Test + public void testCreateEmail() { + assertNotNull(email); + } + + @Test + public void testGetId() { + assertEquals(email.getId(), id); + } + + @Test + public void testGetFrom() { + assertEquals(email.getFrom(), from); + } + + @Test + public void testGetSubject() { + assertEquals(email.getSubject(), subject); + } + + @Test + public void testGetToList() { + assertEquals(email.getToList(), toList); + } + + @Test + public void testGetCcList() { + assertEquals(email.getCcList(), ccList); + } + + @Test + public void testGetSendDate() { + assertEquals(email.getSendDate(), sendDate); + } + + @Test + public void testGetMessage() { + assertEquals(email.getMessage(), message); + } +} From a54324aae761e17216add94da40609f40ee73ce5 Mon Sep 17 00:00:00 2001 From: Rexezuge <79224316+Rexezuge@users.noreply.github.com> Date: Tue, 22 Nov 2022 18:33:33 -0500 Subject: [PATCH 5/7] DOCS: README for `app.easycontact.server.imap` --- EasyContact.app/server/pom.xml | 6 +++++ .../app/easycontact/server/imap/README.md | 26 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 EasyContact.app/server/src/main/java/app/easycontact/server/imap/README.md diff --git a/EasyContact.app/server/pom.xml b/EasyContact.app/server/pom.xml index 9efb071..4999ef8 100644 --- a/EasyContact.app/server/pom.xml +++ b/EasyContact.app/server/pom.xml @@ -42,6 +42,12 @@ 5.9.1 test + + org.mockito + mockito-all + 1.10.19 + test + diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/README.md b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/README.md new file mode 100644 index 0000000..88b3ad1 --- /dev/null +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/README.md @@ -0,0 +1,26 @@ +# EasyContact IMAP Client + +- Package `app.easycontact.server.imap` + +## Usage + +- Create an `EmailReceiver` instance using `EmailReceiverImplementation.builder()` + - `serverName`: IMAP server's domain name + - `serverPort`: IMAP server's port + - `userName`: Username used for authentication + - `userPassword`: Password used for authentication + + ```java + EmailReceiver emailReceiver = EmailReceiverImplementation.builder() + .serverName("mail.rpi.edu") + .serverPort("993") + .userName("rcsid") + .userPassword("password") + .build(); + ``` + +- Download emails from `INBOX` folder + + ```java + emailReceiver.downloadEmails("INBOX"); + ``` From cc39530efbd13133601fd6097830932282b58bf4 Mon Sep 17 00:00:00 2001 From: Rexezuge <79224316+Rexezuge@users.noreply.github.com> Date: Tue, 22 Nov 2022 19:05:42 -0500 Subject: [PATCH 6/7] FEAT: Remove `ExampleMain.java` --- .../java/app/easycontact/server/imap/ExampleMain.java | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java deleted file mode 100644 index 8323610..0000000 --- a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/ExampleMain.java +++ /dev/null @@ -1,8 +0,0 @@ -package app.easycontact.server.imap; - -public class ExampleMain { - public static void main(String[] args) { - EmailReceiver emailReceiver = EmailReceiverImplementation.builder().serverName("mail.rpi.edu").serverPort("993").userName("gongz3").userPassword("DO7gTmQVDeTjHWfU").build(); - emailReceiver.downloadEmails("INBOX"); - } -} From 17ade5280e55a804c7055efe99d3be83ce4a5a36 Mon Sep 17 00:00:00 2001 From: Zhenyuan Gong <79224316+Rexezuge@users.noreply.github.com> Date: Mon, 5 Dec 2022 23:02:15 -0500 Subject: [PATCH 7/7] FIX: Add JDoc missing param --- .../main/java/app/easycontact/server/imap/EmailReceiver.java | 5 +++++ .../easycontact/server/imap/EmailReceiverImplementation.java | 2 ++ 2 files changed, 7 insertions(+) diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiver.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiver.java index 0f9ab2f..f0318e4 100644 --- a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiver.java +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiver.java @@ -10,5 +10,10 @@ public abstract class EmailReceiver { @NonNull String serverName; @NonNull String serverPort; + /** + * Downloads new messages and fetches details for each message. + * + * @param folder name of the email folder + */ public abstract void downloadEmails(String folder); } diff --git a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java index d78eafc..0bf2fdc 100644 --- a/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java +++ b/EasyContact.app/server/src/main/java/app/easycontact/server/imap/EmailReceiverImplementation.java @@ -10,6 +10,8 @@ public final class EmailReceiverImplementation extends EmailReceiver { /** * Downloads new messages and fetches details for each message. + * + * @param folder name of the email folder */ public void downloadEmails(@NonNull String folder) { Properties properties = getServerProperties(EmailReceiverProtocol.IMAP, serverName, serverPort);