From cc3332613bedb451b4cac24bfe0f2aa57be6d879 Mon Sep 17 00:00:00 2001 From: Despereaux <157133321+Despereaux-MAU@users.noreply.github.com> Date: Sat, 4 Jan 2025 13:50:00 +0900 Subject: [PATCH 1/5] =?UTF-8?q?fix:=20=EB=A9=94=EC=9D=BC=20=EC=A3=BC?= =?UTF-8?q?=EC=86=8C=20no=5Freply@botanify.site=20=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20/=20ssl=20=3D=20true=20=EB=A1=9C=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #110 --- .../botanify/common/config/mail/MailConfig.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java b/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java index c4f417b..a475e0f 100644 --- a/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java +++ b/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java @@ -32,9 +32,10 @@ public JavaMailSender javaMailSender() { mailSender.setPassword(password); Properties props = mailSender.getJavaMailProperties(); - props.put("mail.transport.protocol", "smtp"); + props.put("mail.transport.protocol", "smtps"); props.put("mail.smtp.auth", "true"); - props.put("mail.smtp.starttls.enable", "true"); + props.put("mail.smtp.starttls.enable", "false"); + props.put("mail.smtp.ssl.enable", "true"); // SSL 설정 props.put("mail.debug", "true"); return mailSender; From 3f5c5f7215ba5644f69db67853a930f4427b8d05 Mon Sep 17 00:00:00 2001 From: Despereaux <157133321+Despereaux-MAU@users.noreply.github.com> Date: Sat, 4 Jan 2025 14:41:16 +0900 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20=ED=95=98=EC=9D=B4=EC=9B=8D=EC=8A=A4?= =?UTF-8?q?=EC=97=90=20=EB=A7=9E=EA=B2=8C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #110 --- .../botanify/common/config/mail/MailConfig.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java b/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java index a475e0f..a7244e6 100644 --- a/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java +++ b/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java @@ -30,12 +30,14 @@ public JavaMailSender javaMailSender() { mailSender.setPort(port); mailSender.setUsername(username); mailSender.setPassword(password); + mailSender.setProtocol("smtps"); Properties props = mailSender.getJavaMailProperties(); props.put("mail.transport.protocol", "smtps"); props.put("mail.smtp.auth", "true"); + props.put("mail.smtp.ssl.enable", "true"); + props.put("mail.smtp.ssl.trust", "smtps.hiworks.com"); props.put("mail.smtp.starttls.enable", "false"); - props.put("mail.smtp.ssl.enable", "true"); // SSL 설정 props.put("mail.debug", "true"); return mailSender; From e41c49418c5b9444f3138af733ba420f836fd569 Mon Sep 17 00:00:00 2001 From: Despereaux <157133321+Despereaux-MAU@users.noreply.github.com> Date: Sat, 4 Jan 2025 20:19:48 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=EB=A9=94=EC=9D=BC=20=EC=8A=B9?= =?UTF-8?q?=EC=9D=B8=20=EC=A0=84=EA=B9=8C=EC=A7=80=20=EB=8C=80=EA=B8=B0=20?= =?UTF-8?q?=EB=B0=8F=20=ED=94=84=EB=A1=9C=EB=A9=94=ED=85=8C=EC=9A=B0?= =?UTF-8?q?=EC=8A=A4=20=EC=84=A4=EC=A0=95=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #110 --- prometheus/config/prometheus.yml | 27 ++++++++++--------- .../common/config/mail/MailConfig.java | 9 +++---- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/prometheus/config/prometheus.yml b/prometheus/config/prometheus.yml index 10ea651..c43748f 100644 --- a/prometheus/config/prometheus.yml +++ b/prometheus/config/prometheus.yml @@ -1,20 +1,21 @@ global: scrape_interval: 15s - scrape_timeout: 15s - evaluation_interval: 2m - - external_labels: - monitor: 'codelab-monitor' - query_log_file: query_log_file.log scrape_configs: - - job_name: 'monitoring-item' - scrape_interval: 10s - scrape_timeout: 10s - metrics_path: '/metrics' - scheme: 'http' + - job_name: 'spring-1' + static_configs: + - targets: ['3.39.43.235:8080'] + labels: + application: 'spring-1' + + - job_name: 'spring-2' + static_configs: + - targets: ['15.165.192.37:8080'] + labels: + application: 'spring-2' + - job_name: 'nginx' static_configs: - - targets: ['prometheus:9090', 'node_exporter:9100'] + - targets: ['43.202.147.203:9113'] labels: - service: 'monitor' \ No newline at end of file + instance: 'nginx' \ No newline at end of file diff --git a/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java b/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java index a7244e6..62efd63 100644 --- a/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java +++ b/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java @@ -30,14 +30,13 @@ public JavaMailSender javaMailSender() { mailSender.setPort(port); mailSender.setUsername(username); mailSender.setPassword(password); - mailSender.setProtocol("smtps"); + mailSender.setDefaultEncoding("UTF-8"); Properties props = mailSender.getJavaMailProperties(); + props.put("mail.smtps.auth", "true"); + props.put("mail.smtps.ssl.enable", "true"); + props.put("mail.smtps.ssl.trust", "smtps.hiworks.com"); props.put("mail.transport.protocol", "smtps"); - props.put("mail.smtp.auth", "true"); - props.put("mail.smtp.ssl.enable", "true"); - props.put("mail.smtp.ssl.trust", "smtps.hiworks.com"); - props.put("mail.smtp.starttls.enable", "false"); props.put("mail.debug", "true"); return mailSender; From 50a30e1ed6a2f87a3648be11370a3636860ab62e Mon Sep 17 00:00:00 2001 From: Despereaux <157133321+Despereaux-MAU@users.noreply.github.com> Date: Sun, 5 Jan 2025 20:51:58 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=A9=94=EC=9D=BC=20=EC=9D=B8=EC=A6=9D=20=EC=8B=A4=ED=8C=A8?= =?UTF-8?q?=EB=A1=9C=20=EB=A1=A4=EB=B0=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #110 --- .../botanify/common/config/mail/MailConfig.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java b/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java index 62efd63..c4f417b 100644 --- a/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java +++ b/src/main/java/com/sounganization/botanify/common/config/mail/MailConfig.java @@ -30,13 +30,11 @@ public JavaMailSender javaMailSender() { mailSender.setPort(port); mailSender.setUsername(username); mailSender.setPassword(password); - mailSender.setDefaultEncoding("UTF-8"); Properties props = mailSender.getJavaMailProperties(); - props.put("mail.smtps.auth", "true"); - props.put("mail.smtps.ssl.enable", "true"); - props.put("mail.smtps.ssl.trust", "smtps.hiworks.com"); - props.put("mail.transport.protocol", "smtps"); + props.put("mail.transport.protocol", "smtp"); + props.put("mail.smtp.auth", "true"); + props.put("mail.smtp.starttls.enable", "true"); props.put("mail.debug", "true"); return mailSender; From 294057d64a90619c48d1f79bd52b01b721853a96 Mon Sep 17 00:00:00 2001 From: Despereaux <157133321+Despereaux-MAU@users.noreply.github.com> Date: Mon, 6 Jan 2025 11:13:21 +0900 Subject: [PATCH 5/5] =?UTF-8?q?fix:=20aws=20email=20=EC=A0=84=EC=86=A1=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EA=B5=AC=ED=98=84=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #110 --- build.gradle | 1 + .../common/config/mail/AwsSesConfig.java | 34 +++++++++++++++++++ .../botanify/common/service/EmailService.java | 33 +++++++++++++----- 3 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/sounganization/botanify/common/config/mail/AwsSesConfig.java diff --git a/build.gradle b/build.gradle index 3a8ba33..ef6ce8d 100644 --- a/build.gradle +++ b/build.gradle @@ -96,6 +96,7 @@ dependencies { // Email verification implementation 'org.springframework.boot:spring-boot-starter-mail' + implementation 'com.amazonaws:aws-java-sdk-ses:1.12.408' } diff --git a/src/main/java/com/sounganization/botanify/common/config/mail/AwsSesConfig.java b/src/main/java/com/sounganization/botanify/common/config/mail/AwsSesConfig.java new file mode 100644 index 0000000..69dbb49 --- /dev/null +++ b/src/main/java/com/sounganization/botanify/common/config/mail/AwsSesConfig.java @@ -0,0 +1,34 @@ +package com.sounganization.botanify.common.config.mail; + +import com.amazonaws.auth.AWSStaticCredentialsProvider; +import com.amazonaws.auth.BasicAWSCredentials; +import com.amazonaws.services.simpleemail.AmazonSimpleEmailService; +import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClientBuilder; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; + +@Configuration +public class AwsSesConfig { + + @Value("${aws.access-key}") + private String accessKey; + + @Value("${aws.secret-key}") + private String secretKey; + + @Value("${aws.ses.region:ap-northeast-2}") + private String region; + + @Bean + @Primary + public AmazonSimpleEmailService amazonSimpleEmailService() { + BasicAWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey); + return AmazonSimpleEmailServiceClientBuilder.standard() + .withRegion(region) + .withCredentials(new AWSStaticCredentialsProvider(awsCredentials)) + .build(); + } +} + diff --git a/src/main/java/com/sounganization/botanify/common/service/EmailService.java b/src/main/java/com/sounganization/botanify/common/service/EmailService.java index 0883cbd..578dce1 100644 --- a/src/main/java/com/sounganization/botanify/common/service/EmailService.java +++ b/src/main/java/com/sounganization/botanify/common/service/EmailService.java @@ -1,20 +1,37 @@ package com.sounganization.botanify.common.service; +import com.amazonaws.services.simpleemail.AmazonSimpleEmailService; +import com.amazonaws.services.simpleemail.model.*; import lombok.RequiredArgsConstructor; -import org.springframework.mail.SimpleMailMessage; -import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class EmailService { - private final JavaMailSender mailSender; + private final AmazonSimpleEmailService amazonSimpleEmailService; + + @Value("${spring.mail.username}") + private String fromEmail; public void sendVerificationEmail(String to, String verificationCode) { - SimpleMailMessage message = new SimpleMailMessage(); - message.setTo(to); - message.setSubject("Botanify 이메일 인증"); - message.setText("인증 코드: " + verificationCode + "\n\n이 코드를 입력하여 이메일 인증을 완료해주세요."); - mailSender.send(message); + try { + SendEmailRequest request = new SendEmailRequest() + .withDestination( + new Destination().withToAddresses(to)) + .withMessage(new Message() + .withBody(new Body() + .withText(new Content() + .withCharset("UTF-8") + .withData("인증 코드: " + verificationCode + "\n\n이 코드를 입력하여 이메일 인증을 완료해주세요."))) + .withSubject(new Content() + .withCharset("UTF-8") + .withData("Botanify 이메일 인증"))) + .withSource(fromEmail); + + amazonSimpleEmailService.sendEmail(request); + } catch (Exception e) { + throw new RuntimeException("Failed to send email", e); + } } }