From 37ebd5d4a220989db260bf094539111771e81e4b Mon Sep 17 00:00:00 2001 From: kolom1234 Date: Mon, 4 Nov 2024 20:24:14 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=EB=84=A4=EC=9D=B4=EB=B2=84=20gmail=20?= =?UTF-8?q?=EB=AA=A8=EB=91=90=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/compiler.xml | 2 +- .idea/misc.xml | 2 +- .idea/modules.xml | 8 ------ .../webSocket/javafx/HomePage.java | 4 +-- .../webSocket/javafx/MailDetail.java | 5 ++-- .../webSocket/javafx/MailPage.java | 9 ++++--- .../webSocket/javafx/MailSidebar.java | 5 ++-- .../webSocket/javafx/WriteMail.java | 26 ++++++++++++++++++- 8 files changed, 40 insertions(+), 21 deletions(-) delete mode 100644 .idea/modules.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 0f6cfdf..9f543bc 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,7 +1,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 41081b9..7299867 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index d6fa8c2..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/webSocket/src/main/java/computerNetwork/webSocket/javafx/HomePage.java b/webSocket/src/main/java/computerNetwork/webSocket/javafx/HomePage.java index 815452f..5911e29 100644 --- a/webSocket/src/main/java/computerNetwork/webSocket/javafx/HomePage.java +++ b/webSocket/src/main/java/computerNetwork/webSocket/javafx/HomePage.java @@ -82,13 +82,13 @@ private VBox createHomeScreen(Stage primaryStage) { List fetchingInformations= gmailFetcher.fetch(userData.getEmail(),userData.getLoginInfo()); //로그인 데이터 MailPage mailPage = new MailPage(userData); - mailPage.start(fetchingInformations,primaryStage); // MailPage를 시작 구글과 통신하는 함수 호출 인자 email, password + mailPage.start(userInfo,fetchingInformations,primaryStage); // MailPage를 시작 구글과 통신하는 함수 호출 인자 email, password } else if (selectedSite.equals("Naver")) { List fetchingInformations= naverFetcher.fetch(userData.getEmail(),userData.getLoginInfo()); //로그인 데이터 MailPage mailPage = new MailPage(userData); - mailPage.start(fetchingInformations,primaryStage); // MailPage를 시작 구글과 통신하는 함수 호출 인자 email, password + mailPage.start(userInfo,fetchingInformations,primaryStage); // MailPage를 시작 구글과 통신하는 함수 호출 인자 email, password } } catch (Exception e) { System.out.println("로그인 오류가 발생함"); diff --git a/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailDetail.java b/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailDetail.java index 287c0da..168a5f1 100644 --- a/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailDetail.java +++ b/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailDetail.java @@ -1,5 +1,6 @@ package computerNetwork.webSocket.javafx; +import computerNetwork.webSocket.dto.UserInfo; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; @@ -17,7 +18,7 @@ public MailDetail(WriteMail writeMail) { this.writeMail = writeMail; // WriteMail 인스턴스 초기화 } - public void showMailDetails(Stage owner, String sender, String recipient, String subject) { + public void showMailDetails(UserInfo userInfo,Stage owner, String sender, String recipient, String subject) { Stage detailStage = new Stage(); detailStage.initOwner(owner); detailStage.setTitle("메일 세부 정보"); @@ -37,7 +38,7 @@ public void showMailDetails(Stage owner, String sender, String recipient, String // 답장하기 버튼 Button replyButton = new Button("답장하기"); replyButton.setOnAction(event -> { - writeMail.openComposeMailWindow(owner, sender); // 답장할 때 보낸이를 받는 사람으로 설정 + writeMail.openComposeMailWindow(userInfo,owner, sender); // 답장할 때 보낸이를 받는 사람으로 설정 // detailStage.close(); // 이 줄을 제거하여 창이 닫히지 않도록 합니다. }); diff --git a/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailPage.java b/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailPage.java index 3aa81b7..a5bf8a3 100644 --- a/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailPage.java +++ b/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailPage.java @@ -42,12 +42,12 @@ public MailPage(UserData userData) { this.userEmail = userData.getEmail(); } - public void start(List fetchingInformations, Stage primaryStage) { + public void start(UserInfo userInfo,List fetchingInformations, Stage primaryStage) { // 메일박스의 루트 레이아웃 BorderPane mailboxRoot = new BorderPane(); // 좌측 사이드바 생성 - MailSidebar sidebar = new MailSidebar(primaryStage, this,fetchingInformations); + MailSidebar sidebar = new MailSidebar(userInfo,primaryStage, this,fetchingInformations); mailboxRoot.setLeft(sidebar); // 메일 내용 표시 영역 (테이블) mailTable = new MailTable(); @@ -56,7 +56,7 @@ public void start(List fetchingInformations, Stage primaryS if (event.getClickCount() == 2) { Mail selectedMail = mailTable.getSelectedMail(); // 선택된 메일 가져오기 if (selectedMail != null) { - showMailDetails(selectedMail); // 세부 정보 표시 + showMailDetails(userInfo,selectedMail); // 세부 정보 표시 } } }); @@ -118,8 +118,9 @@ public void loadAllMails(List fetchingInformations) { - private void showMailDetails(Mail mail) { + private void showMailDetails(UserInfo userInfo,Mail mail) { mailDetail.showMailDetails( + userInfo, (Stage) mailTable.getTableView().getScene().getWindow(), mail.getSender(), mail.getDate(), diff --git a/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailSidebar.java b/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailSidebar.java index 216387b..7076d8d 100644 --- a/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailSidebar.java +++ b/webSocket/src/main/java/computerNetwork/webSocket/javafx/MailSidebar.java @@ -1,6 +1,7 @@ package computerNetwork.webSocket.javafx; import computerNetwork.webSocket.dto.FetchingInformation; +import computerNetwork.webSocket.dto.UserInfo; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.control.Button; @@ -11,7 +12,7 @@ public class MailSidebar extends VBox { - public MailSidebar(Stage primaryStage, MailPage mailPage, List fetchingInformations) { + public MailSidebar(UserInfo userInfo,Stage primaryStage, MailPage mailPage, List fetchingInformations) { @@ -26,7 +27,7 @@ public MailSidebar(Stage primaryStage, MailPage mailPage, List { WriteMail writeMail = new WriteMail(); // WriteMail 인스턴스 생성 - writeMail.openComposeMailWindow(primaryStage, ""); // 메일 쓰기 창 열기, 기본적으로 받는 사람은 빈 문자열 + writeMail.openComposeMailWindow(userInfo,primaryStage, ""); // 메일 쓰기 창 열기, 기본적으로 받는 사람은 빈 문자열 }); allMailsButton.setOnAction(event -> mailPage.loadAllMails(fetchingInformations)); diff --git a/webSocket/src/main/java/computerNetwork/webSocket/javafx/WriteMail.java b/webSocket/src/main/java/computerNetwork/webSocket/javafx/WriteMail.java index d5762d3..0eb51e2 100644 --- a/webSocket/src/main/java/computerNetwork/webSocket/javafx/WriteMail.java +++ b/webSocket/src/main/java/computerNetwork/webSocket/javafx/WriteMail.java @@ -1,5 +1,9 @@ package computerNetwork.webSocket.javafx; +import computerNetwork.webSocket.dto.UserInfo; +import computerNetwork.webSocket.gmail.GmailSender; +import computerNetwork.webSocket.naver.NaverFetcher; +import computerNetwork.webSocket.naver.NaverSender; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; @@ -10,17 +14,21 @@ import javafx.stage.Stage; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +//import static computerNetwork.webSocket.javafx.HomePage.userInfo; + public class WriteMail { - public void openComposeMailWindow(Stage owner, String recipient) { + public void openComposeMailWindow(UserInfo info, Stage owner, String recipient) { Stage composeStage = new Stage(); composeStage.initModality(Modality.WINDOW_MODAL); // 부모 창이 활성화된 상태에서만 작동 composeStage.initOwner(owner); // 부모 창 설정 composeStage.setTitle("메일 쓰기"); + // 레이아웃 설정 VBox layout = new VBox(); layout.setPadding(new Insets(10)); @@ -78,6 +86,22 @@ public void openComposeMailWindow(Stage owner, String recipient) { String email = emailField.getText(); String subject = subjectField.getText(); String content = contentArea.getText(); + if(info.platform()=="Naver"){ + NaverSender ns=new NaverSender(); + try { + ns.sendNaverEmail(info.email(),info.password(),email,subject,content); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } + if(info.platform()=="Google"){ + GmailSender gs= new GmailSender(info.email(),info.password()); + try { + gs.sendEmail(email,content); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + } // 여기서 전송 로직을 추가하면 됩니다. System.out.println("보낼 메일 주소: " + email); System.out.println("제목: " + subject); From a7d35f4f89a195d8eedef1d9fe1a384454fa6e55 Mon Sep 17 00:00:00 2001 From: kolom1234 Date: Mon, 4 Nov 2024 21:58:57 +0900 Subject: [PATCH 2/3] =?UTF-8?q?subject=EB=A7=8C=20=EA=B0=81=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=EC=97=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../computerNetwork/webSocket/gmail/GmailSender.java | 10 ++++++---- .../computerNetwork/webSocket/javafx/WriteMail.java | 2 +- .../src/main/java/computerNetwork/webSocket/ui/UI.java | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/webSocket/src/main/java/computerNetwork/webSocket/gmail/GmailSender.java b/webSocket/src/main/java/computerNetwork/webSocket/gmail/GmailSender.java index 50c272c..9a1fdf3 100644 --- a/webSocket/src/main/java/computerNetwork/webSocket/gmail/GmailSender.java +++ b/webSocket/src/main/java/computerNetwork/webSocket/gmail/GmailSender.java @@ -14,14 +14,15 @@ public class GmailSender { private String gmailId; private String gmailAppPassword; private String receivedEmail; + private String subject; private String message; public GmailSender(String id,String password){ this.gmailId=id; this.gmailAppPassword=password; } - public void sendEmail(String receivedEmail,String message) throws IOException { - setReceivendEmailAndMessage(receivedEmail, message); + public void sendEmail(String receivedEmail,String subject,String message) throws IOException { + setReceivendEmailAndMessage(receivedEmail,subject, message); // 일반 소켓을 사용해 Gmail SMTP 서버에 연결 (포트 587) Socket clientSocket = new Socket("smtp.gmail.com", 587); SSLSocket sslSocket = getTLSSocket(clientSocket); @@ -42,8 +43,9 @@ public void sendEmail(String receivedEmail,String message) throws IOException { } - private void setReceivendEmailAndMessage(String receivedEmail, String message) { + private void setReceivendEmailAndMessage(String receivedEmail,String subject, String message) { this.receivedEmail= receivedEmail; + this.subject = subject; this.message= message; } @@ -125,7 +127,7 @@ private void setReadyToEmail() throws IOException { private void sendEmailData() throws IOException { String response; - outToServer.writeBytes("Subject: Test Email\r\n"); + outToServer.writeBytes("Subject: "+ subject +"\r\n"); outToServer.writeBytes("To: "+receivedEmail+"\r\n"); outToServer.writeBytes("From: "+gmailId+"\r\n"); outToServer.writeBytes("\r\n"); // 헤더와 본문을 구분하는 빈 줄 diff --git a/webSocket/src/main/java/computerNetwork/webSocket/javafx/WriteMail.java b/webSocket/src/main/java/computerNetwork/webSocket/javafx/WriteMail.java index 0eb51e2..9f967b2 100644 --- a/webSocket/src/main/java/computerNetwork/webSocket/javafx/WriteMail.java +++ b/webSocket/src/main/java/computerNetwork/webSocket/javafx/WriteMail.java @@ -97,7 +97,7 @@ public void openComposeMailWindow(UserInfo info, Stage owner, String recipient) if(info.platform()=="Google"){ GmailSender gs= new GmailSender(info.email(),info.password()); try { - gs.sendEmail(email,content); + gs.sendEmail(email, subject, content); } catch (IOException ex) { throw new RuntimeException(ex); } diff --git a/webSocket/src/main/java/computerNetwork/webSocket/ui/UI.java b/webSocket/src/main/java/computerNetwork/webSocket/ui/UI.java index 9b3150a..4317764 100644 --- a/webSocket/src/main/java/computerNetwork/webSocket/ui/UI.java +++ b/webSocket/src/main/java/computerNetwork/webSocket/ui/UI.java @@ -31,7 +31,7 @@ public void run() throws IOException { //TODO: 받은 정보를 통해서 websocket program 구현 GmailSender gmailSender=new GmailSender(email,password); - gmailSender.sendEmail("msw0909@naver.com","mailmail"); + gmailSender.sendEmail("msw0909@naver.com","this is subject","mailmail"); } } From 57f0fd5d59d89a94b5cf01ceb3f833bef023d3ea Mon Sep 17 00:00:00 2001 From: kolom1234 Date: Mon, 4 Nov 2024 22:13:45 +0900 Subject: [PATCH 3/3] =?UTF-8?q?subject=EB=A7=8C=20=EA=B0=81=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=EC=97=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.name | 1 + 1 file changed, 1 insertion(+) create mode 100644 .idea/.name diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..6acfe80 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +webSocket \ No newline at end of file