[Java] SMTP (Gmail 보내기)

Wonjun Seo·2023년 4월 22일
0

Java에서 SMTP를 기반으로 이메일을 보내려면, mail.jar와 activation.jar 파일을 다운받고 프로젝트에 import 해주어야 한다.


  1. Gmail 계정 -> 보안 -> 2단계 인증 > 앱 비밀번호 클릭

  1. 앱 선택: 메일, 기기 선택: Windows 컴퓨터를 선택합니다.

  2. 생성된 16글자의 비밀번호를 이메일의 패스워드로 사용합니다.

Java 코드

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MyMail {
	
	private static final String user = "your_gmail_address@gmail.com"; // gmail 계정
    private static final String password = "********"; // gmail 패스워드
	
	public static void sendEmail(String recipient) {
        Properties prop = new Properties();
        prop.put("mail.smtp.auth", true);
        prop.put("mail.smtp.starttls.enable", "true");
        prop.put("mail.smtp.host", "smtp.gmail.com");
        prop.put("mail.smtp.port", 587);
        prop.put("mail.smtp.ssl.trust", "smtp.gmail.com");
        prop.put("mail.smtp.ssl.protocols", "TLSv1.2");
 
        Session session = Session.getDefaultInstance(prop, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(user, password);
            }
        });
 
        MimeMessage message = new MimeMessage(session);
        
        try {
            message.setFrom(new InternetAddress(user));
 
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
 
            message.setSubject("메일 제목 입력");
 
            message.setText("내용 입력");
 
            Transport.send(message);
 
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
 
    }

}

0개의 댓글