[java] Javamail을 사용하여 이메일에 암호화 적용하기
Javamail은 Java로 이메일을 전송, 수신 및 관리하기 위한 API입니다. 암호화는 이메일을 안전하게 전송하기 위해 중요한 요소입니다. Javamail을 사용하여 이메일에 암호화를 적용하는 방법을 배워봅시다.
전제 조건
- Javamail API가 설치되어 있어야 합니다.
- JDK (Java Development Kit)가 설치되어 있어야 합니다.
1. SSL/TLS 암호화 사용하기
SSL (Secure Socket Layer) 및 TLS (Transport Layer Security)은 네트워크 통신을 보안하기 위해 사용되는 프로토콜입니다. Javamail을 사용하여 이메일을 보낼 때, SSL/TLS 암호화를 사용하려면 다음 단계를 따라야 합니다.
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class EmailEncryptionExample {
public static void main(String[] args) {
// SMTP 서버 호스트 및 포트 설정
String host = "smtp.example.com";
int port = 587;
// 발신자 이메일 주소 및 비밀번호 설정
String senderEmail = "sender@example.com";
String senderPassword = "password";
// 수신자 이메일 주소 설정
String recipientEmail = "recipient@example.com";
// SSL/TLS 암호화를 사용하는 경우 아래의 설정을 추가합니다.
Properties properties = new Properties();
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.ssl.trust", host);
// 세션 생성
Session session = Session.getDefaultInstance(properties,
new javax.mail.Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(senderEmail, senderPassword);
}
});
try {
// 메시지 생성
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(senderEmail));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipientEmail));
message.setSubject("암호화된 이메일 보내기");
message.setText("암호화된 이메일 내용입니다.");
// 메시지 전송
Transport.send(message);
System.out.println("이메일이 성공적으로 보내졌습니다.");
} catch (MessagingException e) {
System.out.println("이메일 전송 중 오류가 발생했습니다: " + e.getMessage());
}
}
}
위 코드에서 host
, senderEmail
, senderPassword
, recipientEmail
값을 실제 값으로 대체해야 합니다. 또한, 필요한 경우 port
값을 변경할 수 있습니다.
2. PGP 암호화 사용하기
PGP (Pretty Good Privacy) 암호화는 사용자 간에 안전하게 메시지를 교환하기 위해 사용되는 암호화 프로토콜입니다. Javamail을 사용하여 PGP 암호화를 적용하려면 다음 단계를 따라야 합니다.
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
public class EmailEncryptionExample {
public static void main(String[] args) {
// SMTP 서버 호스트 및 포트 설정
String host = "smtp.example.com";
int port = 587;
// 발신자 이메일 주소 및 비밀번호 설정
String senderEmail = "sender@example.com";
String senderPassword = "password";
// 수신자 이메일 주소 설정
String recipientEmail = "recipient@example.com";
// PGP 암호화를 사용하는 경우 아래의 설정을 추가합니다.
Properties properties = new Properties();
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.ssl.trust", host);
properties.put("mail.mime.crypt.x-pgp-encrypt", "true");
// 세션 생성
Session session = Session.getDefaultInstance(properties,
new javax.mail.Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(senderEmail, senderPassword);
}
});
try {
// 메시지 생성
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(senderEmail));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipientEmail));
message.setSubject("PGP 암호화된 이메일 보내기");
message.setText("PGP 암호화된 이메일 내용입니다.");
// 메시지 전송
Transport.send(message);
System.out.println("이메일이 성공적으로 보내졌습니다.");
} catch (MessagingException e) {
System.out.println("이메일 전송 중 오류가 발생했습니다: " + e.getMessage());
}
}
}
PGP 암호화를 사용하려면 properties.put("mail.mime.crypt.x-pgp-encrypt", "true");
줄을 추가해야 합니다.
결론
Javamail을 사용하여 이메일에 암호화를 적용하는 방법을 살펴보았습니다. SSL/TLS 또는 PGP 암호화를 사용하여 메시지를 안전하게 보낼 수 있습니다.