기록만이살길

Java로 이메일 보내기

Spring

Java로 이메일 보내기

기록만이살길 2023. 3. 17. 22:05
반응형

1. 개요

이 빠른 사용방법(예제)에서는 핵심 Java 메일 라이브러리를 사용하여 첨부 파일이 있거나 없는 이메일을 보내는 방법을 살펴보겠습니다.

2. 프로젝트 설정 및 의존성

이 기사에서는 Angus Mail 에 종속된 간단한 Maven 기반 프로젝트를 사용합니다 . 이것은 Jakarta Mail API 사양 의 Eclipse 구현입니다 .

<dependency>
    <groupId>org.eclipse.angus</groupId>
    <artifactId>angus-mail</artifactId>
    <version>2.0.1</version>
</dependency>

최신 버전은 여기에서 찾을 수 있습니다 .

3. 일반 텍스트 및 HTML 이메일 보내기

먼저 이메일 서비스 Provider의 자격 증명으로 라이브러리를 구성해야 합니다. 그런 다음 보내기 위한 메시지를 구성하는 데 사용할 세션을  만듭니다 .

구성은 Java  속성  개체를 통해 이루어집니다.

Properties prop = new Properties();
prop.put("mail.smtp.auth", true);
prop.put("mail.smtp.starttls.enable", "true");
prop.put("mail.smtp.host", "smtp.mailtrap.io");
prop.put("mail.smtp.port", "25");
prop.put("mail.smtp.ssl.trust", "smtp.mailtrap.io");

위의 속성 구성에서 이메일 호스트를 Mailtrap으로 구성하고 서비스에서 제공하는 포트도 사용했습니다.

이제 사용자 이름과 비밀번호로 세션을 생성해 보겠습니다.

Session session = Session.getInstance(prop, new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }
});

사용자 이름과 비밀번호는 호스트 및 포트 매개변수와 함께 메일 서비스 제공업체에서 제공합니다.

이제 메일 세션  개체가 있으므로  전송을 위한 Mime 메시지를  만들어 보겠습니다 .

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("from@gmail.com"));
message.setRecipients(
  Message.RecipientType.TO, InternetAddress.parse("to@gmail.com"));
message.setSubject("Mail Subject");

String msg = "This is my first email using JavaMailer";

MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setContent(msg, "text/html; charset=utf-8");

Multipart multipart = new MimeMultipart();
multipart.addBodyPart(mimeBodyPart);

message.setContent(multipart);

Transport.send(message);

위의 스니펫에서 먼저  필요한 속성(to, from 및 subject)을 사용하여 메시지  인스턴스를 만들었습니다. 그 다음에는  우리의 메시지가 HTML 스타일이기 때문에 text/html 로 인코딩된  mimeBodyPart가 옵니다.

 다음으로, 우리 가 만든 mimeBodyPart를 래핑하는 데 사용할 수 있는  MimeMultipart  개체 의 인스턴스를 만들었습니다 .

마지막으로 multipart  객체를 메시지 의 내용으로  설정하고 전송  객체 의  send()를 사용하여 메일 전송을 수행했습니다.

따라서  mimeBodyPart가 메시지 에 포함된  멀티파트  에 포함되어 있다고  말할 수 있습니다 . 이런 식으로 멀티파트는  하나 이상의  mimeBodyPart 를 포함할 수 있습니다 .

이것은 다음 섹션의 초점이 될 것입니다.

4. 이메일을 첨부하여 보내기

다음으로 첨부 파일을 보내려면 다른  MimeBodyPart를 만들고 파일을 첨부하기만 하면 됩니다.

MimeBodyPart attachmentBodyPart = new MimeBodyPart();
attachmentBodyPart.attachFile(new File("path/to/file"));

그런 다음 이전에 만든 MimeMultipart 개체 에 새 본문 부분을 추가할 수 있습니다  .

multipart.addBodyPart(attachmentBodyPart);

그게 우리가 해야 할 전부입니다.

다시 한 번 메시지  개체 의 내용으로  다중 부분  인스턴스를 설정 하고 마지막으로 메일 전송을 수행하기 위해 send()를  사용합니다 .

5. 이메일 텍스트 서식 지정

이메일 텍스트의 서식을 지정하고 스타일을 지정하기 위해 HTML 및 CSS 태그를 사용할 수 있습니다.

예를 들어 텍스트를 굵게 표시하려면  <b> 태그를 구현합니다. 텍스트를 색칠하기 위해  스타일 태그를 사용할 수 있습니다. 볼드와 같은 추가 속성을 원할 경우 HTML 태그와 CSS 태그를 결합할 수도 있습니다.

굵은 빨간색 텍스트를 포함하는 문자열을 생성해 보겠습니다 .

String msgStyled = "This is my <b style='color:red;'>bold-red email</b> using JavaMailer";

문자열은 이메일 본문에 보낼 스타일이 지정된 텍스트를 보관합니다.

6. 결론

이 기사에서는 Jakarta Mail API를 사용하여 첨부 파일이 있는 경우에도 이메일을 보내는 방법을 살펴보았습니다.

항상 그렇듯이 전체 소스 코드는 GitHub에서 사용할 수 있습니다 .

res – REST with Spring (eBook) (everywhere)
참고
  • https://docs.spring.io/spring-framework/docs/current/reference/html
  • https://www.baeldung.com/java-email
반응형