[java] Javamail을 사용하여 이메일에 특정 파일 타입 첨부하기
이메일에 파일을 첨부하는 것은 JavaMail API를 사용하는 것이 간단하고 효과적입니다. 이 예제에서는 Javamail을 사용하여 이메일에 특정 파일 타입을 첨부하는 방법을 알려드리겠습니다.
먼저, 필요한 라이브러리를 의존성으로 추가해야 합니다. Maven을 사용한다면 pom.xml 파일에 다음 코드를 추가하세요:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
이제 첨부할 파일과 이메일을 보낼 수신자의 정보를 준비해야 합니다. 다음은 예제 코드입니다:
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties;
public class EmailAttachmentExample {
public static void main(String[] args) {
// SMTP 서버 설정
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
// 이메일 발신자 정보
final String username = "your-email@gmail.com";
final String password = "your-password";
// 이메일 수신자 정보
String toAddress = "recipient-email@example.com";
// 첨부 파일 경로
String filePath = "path-to-your-file.txt";
// 이메일 세션 생성
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// MimeMessage 생성
Message message = new MimeMessage(session);
// 발신자 설정
message.setFrom(new InternetAddress(username));
// 수신자 설정
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddress));
// 메일 제목 설정
message.setSubject("이메일 첨부파일 테스트");
// 첨부 파일 생성
MimeBodyPart attachmentBodyPart = new MimeBodyPart();
FileDataSource fileDataSource = new FileDataSource(filePath);
attachmentBodyPart.setDataHandler(new DataHandler(fileDataSource));
attachmentBodyPart.setFileName(fileDataSource.getName());
// 메일 내용 생성
MimeBodyPart textBodyPart = new MimeBodyPart();
textBodyPart.setText("이메일에 첨부된 파일입니다.");
// MimeMultipart 생성 및 첨부 파일, 텍스트 내용 추가
MimeMultipart multipart = new MimeMultipart();
multipart.addBodyPart(attachmentBodyPart);
multipart.addBodyPart(textBodyPart);
// 메시지에 Multipart 객체 추가
message.setContent(multipart);
// 이메일 전송
Transport.send(message);
System.out.println("이메일 전송 완료!");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
위의 예제 코드에서는 Gmail SMTP 서버를 사용하여 이메일을 보내고 있습니다. 필요에 따라 SMTP 서버 호스트 및 포트를 변경하여 다른 서비스를 사용할 수 있습니다.
이제 위의 코드를 실행하면 지정된 경로의 파일이 첨부된 이메일이 수신자에게 전송됩니다.