[java] Javamail을 사용하여 이메일에 첨부파일 제거하기

이메일을 보내는데 첨부파일을 제거하고 싶을 때, Javamail을 사용하여 이를 간단하게 구현할 수 있습니다. Javamail은 자바로 이메일을 보내고 관리할 수 있는 라이브러리입니다.

Javamail 라이브러리 추가

먼저, Javamail 라이브러리를 프로젝트에 추가해야 합니다. 아래와 같이 Maven을 사용하는 경우, pom.xml에 Javamail 의존성을 추가합니다.

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>1.6.2</version>
</dependency>

첨부파일 제거하기

다음은 Javamail을 사용하여 이메일에 첨부파일을 제거하는 방법입니다. 아래 코드는 Gmail을 사용하여 이메일을 보내는 예제입니다.

import java.io.IOException;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class EmailSender {
    public static void main(String[] args) {
        String host = "smtp.gmail.com";
        int port = 587;
        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", port);

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

        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress("from-email@gmail.com"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("to-email@gmail.com"));
            message.setSubject("첨부파일이 있는 이메일");

            // 첨부파일 생성
            MimeBodyPart attachmentPart = new MimeBodyPart();
            attachmentPart.attachFile("path/to/attachment.pdf");

            // 메인 내용 생성
            MimeBodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setContent("첨부파일이 있는 이메일 본문", "text/html");

            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(attachmentPart);
            multipart.addBodyPart(messageBodyPart);

            message.setContent(multipart);

            // 이메일 보내기
            Transport.send(message);

            System.out.println("이메일이 성공적으로 보내졌습니다.");
        } catch (MessagingException | IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드에서 path/to/attachment.pdf 부분을 첨부파일의 경로로 변경하면 됩니다.

결과 확인

위의 코드를 실행하고 이메일이 성공적으로 보내졌는지 확인하세요. 받은 이메일에는 첨부파일이 포함되지 않아야 합니다.

결론

Javamail을 사용하여 이메일에 첨부파일을 제거하는 방법을 알아보았습니다. 이를 통해 원하는 파일을 첨부하지 않고 이메일을 보낼 수 있습니다. Javamail의 다른 기능들도 활용하여 이메일 관리를 더욱 효율적으로 할 수 있습니다.

참고 자료