[java] Javamail을 사용하여 이메일에 원문 보기 링크 추가하기

이메일을 보낼 때 문제없이 내용을 보내는 것은 중요하지만, 때로는 이메일 수신자가 원문을 볼 수 있는 링크가 필요한 경우도 있습니다. 이러한 경우 Javamail 라이브러리를 사용하여 이메일에 원문 보기 링크를 추가하는 방법을 알아보겠습니다.

1. Javamail 의존성 추가

이 작업을 위해 먼저 프로젝트에 Javamail 의존성을 추가해야 합니다. Maven을 사용한다면 pom.xml 파일에 다음 의존성 선언을 추가합니다.

<dependency>
  <groupId>com.sun.mail</groupId>
  <artifactId>javax.mail</artifactId>
  <version>1.6.2</version>
</dependency>

Gradle을 사용한다면 build.gradle 파일에 다음 종속성을 추가합니다.

implementation 'com.sun.mail:javax.mail:1.6.2'

의존성을 추가한 후에는 프로젝트를 빌드해야 합니다.

2. 이메일 객체 생성

이제 Javamail을 사용하여 이메일 객체를 생성해야 합니다. 다음은 기본적인 설정을 포함한 예제입니다.

import javax.mail.*;
import javax.mail.internet.*;

public class EmailSender {
  public static void main(String[] args) throws Exception {
    String host = "smtp.gmail.com";
    String username = "your-email@gmail.com";
    String password = "your-password";
    String fromAddress = "your-email@gmail.com";
    String toAddress = "recipient-email@example.com";
    String subject = "Hello";
    String body = "This is the email content.";

    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.port", "587");

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

    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress(fromAddress));
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddress));
    message.setSubject(subject);
    message.setText(body);

    // 원문 보기 링크 추가
    String viewPlainTextLink = "<a href=\"https://example.com/view/plain-text\">View Plain Text</a>";
    String viewHtmlLink = "<a href=\"https://example.com/view/html\">View HTML</a>";
    message.setContent(body + "<br><br>" + viewPlainTextLink + "<br>" + viewHtmlLink, "text/html");

    // 이메일 전송
    Transport.send(message);

    System.out.println("Email sent successfully!");
  }
}

위의 코드에서는 Gmail SMTP 서버를 사용하고 있으며, 이메일을 보내는 사람, 받는 사람, 제목, 내용 등을 설정한 다음에 원문 보기 링크를 추가하고 이메일을 전송합니다.

3. 원문 보기 링크 추가

이메일 객체를 생성한 후에는 message.setContent() 메서드를 사용하여 원문 보기 링크를 추가해야 합니다. 위의 예제에서는 View Plain TextView HTML 링크를 추가했습니다.

링크를 추가할 때, HTML 형식으로 작성하여 message.setContent()의 두 번째 매개변수로 "text/html"를 사용해야 합니다. 링크는 <a> 태그를 사용하여 작성하면 됩니다.

4. 실행 및 결과 확인

이제 프로젝트를 빌드하고 EmailSender 클래스를 실행하면 이메일이 전송되고 원문 보기 링크가 추가된 메일을 받는 사람이 이메일 내에서 확인할 수 있습니다.

이 방법을 사용하여 Javamail을 통해 이메일에 원문 보기 링크를 추가하는 방법을 알아보았습니다. 원하는 경우 링크를 다른 URL로 수정하거나 자신의 요구 사항에 맞게 맞춤으로 개선할 수 있습니다.

참고 자료