[java] Javamail을 사용하여 이메일에 캘린더 추가하기

Javamail을 사용하여 이메일에 캘린더 추가하기

Javamail은 자바로 이메일을 보내고 받을 수 있는 라이브러리입니다. 이 라이브러리를 사용하여 이메일에 캘린더를 추가하는 방법에 대해 알아보겠습니다.

1. Javamail 라이브러리 추가

먼저, Javamail 라이브러리를 프로젝트에 추가해야합니다. Maven 이나 Gradle과 같은 의존성 관리 도구를 사용하고 있다면, 아래와 같이 pom.xml 또는 build.gradle 파일에 의존성을 추가할 수 있습니다.

Maven:

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

Gradle:

dependencies {
    implementation 'com.sun.mail:javax.mail:1.6.2'
}

수동으로 라이브러리를 추가하고자 한다면, Oracle 공식 웹사이트에서 라이브러리 다운로드 링크를 찾을 수 있습니다.

2. 이메일에 캘린더 이벤트 추가하기

이제 이메일에 캘린더 이벤트를 추가하는 방법에 대해 알아보겠습니다. 아래는 예제 코드입니다:

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

public class EmailWithCalendarExample {

    public static void main(String[] args) throws MessagingException {
        String host = "smtp.gmail.com";
        String username = "your-email@gmail.com";
        String password = "your-password";

        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 javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        // 이메일 생성
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(username));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress("recipient-email@example.com"));
        message.setSubject("이벤트 추가");

        // 캘린더 이벤트 생성
        Multipart multipart = new MimeMultipart("alternative");
        BodyPart messageBodyPart = new MimeBodyPart();
        String event = "BEGIN:VCALENDAR\n" +
                "VERSION:2.0\n" +
                "PRODID:-//hacksw/handcal//NONSGML v1.0//EN\n" +
                "BEGIN:VEVENT\n" +
                "UID:20220707T080000Z-20220707T090000Z@example.com\n" +
                "DTSTAMP:20220707T080000Z\n" +
                "DTSTART:20220707T090000Z\n" +
                "DTEND:20220707T100000Z\n" +
                "SUMMARY:Java Meeting\n" +
                "END:VEVENT\n" +
                "END:VCALENDAR";
        messageBodyPart.setContent(event, "text/calendar");
        multipart.addBodyPart(messageBodyPart);
        message.setContent(multipart);

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

        System.out.println("이벤트 추가 이메일이 전송되었습니다.");
    }
}

위 코드에서 usernamepassword는 이메일 계정의 정보를 입력해야합니다. 또한 message.addRecipient() 메소드에 수신자 이메일을 적절히 입력해야합니다.

참고 자료