간단하게 SMTP로 메일 보내는 방법을 기술한다.
보안적으로 약간은 부족할수있다.
먼져 설정해야 할것은 Gmail 설정을 해줘야 한다.
1. 앱 비밀번호 만들기
구글 계정에 로그인하여 보안을 선택해준다.
<!-- Gmail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
#gmail
email.user=email
email.password=password
email.smtp.host=smtp.gmail.com
email.smtp.port=465
package com.shop.controller;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class EmailSender {
private Properties emailConfig;
public EmailSender() throws Exception {
this.emailConfig = loadEmailConfig();
}
private Properties loadEmailConfig() throws Exception {
Properties props = new Properties();
// application.properties 파일을 로드합니다.
props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties"));
return props;
}
public void sendEmail(String recipient, String subject, String text) throws MessagingException {
Properties props = createEmailProperties();
Session session = createSession(props);
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(emailConfig.getProperty("email.user")));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
message.setSubject(subject);
message.setText(text);
Transport.send(message);
}
private Properties createEmailProperties() {
Properties props = new Properties();
props.put("mail.smtp.host", emailConfig.getProperty("email.smtp.host"));
props.put("mail.smtp.port", emailConfig.getProperty("email.smtp.port"));
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.trust", emailConfig.getProperty("email.smtp.host"));
return props;
}
private Session createSession(Properties props) {
return Session.getInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(emailConfig.getProperty("email.user"), emailConfig.getProperty("email.password"));
}
});
}
public static void main(String[] args) {
try {
EmailSender sender = new EmailSender();
sender.sendEmail("testemailaddress@gmail.com", "테스트 메일입니다.", "이것은 테스트 메일입니다. \n\n 잘 갔나요?");
} catch (Exception e) {
e.printStackTrace();
}
}
}