반응형
# 자바 이메일 보내기 구현(Gmail SMTP)
## gmail 설정하기
- 구글 계정설정으로 진입
- 보안 탭에서 2단계 인증 설정 후 https://myaccount.google.com/lesssecureapps 들어가서 사용으로 설정
- 다시 보안 탭에서 2단계 인증 설정 밑에있는 앱 비밀번호 진입
- 앱 비밀번호를 생성할 앱 및 기기를 선택에서 앱 선택은 기타 선택 후 이름 입력하여 확인, 우측에 발급된 비밀번호 기억 ( 해당 비밀번호가 유출될 경우 구글 계정에 위험이 생길 수 있으니 유출되지 않도록 하기.. )
## Gmail SMTP
- 해당 파일을 WEB-INF 내 lib에 저장 후 Build Path 진행
- Gmail SMTP 이용을 위해 인증용 파일, 사용할 파일 구성
- 먼저 인증용 파일( 구글아이디, 발급받은 패스워드 입력 )
package com.sbs.java.blog.util;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class MailAuth extends Authenticator{
PasswordAuthentication pa;
public MailAuth() {
String mail_id = "구글 아이디"
String mail_pw = "발급 받은 비밀번호";
pa = new PasswordAuthentication(mail_id, mail_pw);
}
public PasswordAuthentication getPasswordAuthentication() {
return pa;
}
}
- 메일 발송 내역 입력 등 진행할 파일
package com.sbs.java.blog.util;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
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 MailSend {
public void welcomeMailSend() {
Properties prop = System.getProperties();
// 로그인시 TLS를 사용할 것인지 설정
prop.put("mail.smtp.starttls.enable", "true");
// 이메일 발송을 처리해줄 SMTP서버
prop.put("mail.smtp.host", "smtp.gmail.com");
// SMTP 서버의 인증을 사용한다는 의미
prop.put("mail.smtp.auth", "true");
// TLS의 포트번호는 587이며 SSL의 포트번호는 465이다.
prop.put("mail.smtp.port", "587");
Authenticator auth = new MailAuth();
Session session = Session.getDefaultInstance(prop, auth);
MimeMessage msg = new MimeMessage(session);
try {
// 보내는 날짜 지정
msg.setSentDate(new Date());
// 발송자를 지정한다. 발송자의 메일, 발송자명
msg.setFrom(new InternetAddress("아이디@gmail.com", "표시될 이름"));
// 수신자의 메일을 생성한다.
InternetAddress to = new InternetAddress("아이디@gmail.com");
// Message 클래스의 setRecipient() 메소드를 사용하여 수신자를 설정한다. setRecipient() 메소드로 수신자, 참조,
// 숨은 참조 설정이 가능하다.
// Message.RecipientType.TO : 받는 사람
// Message.RecipientType.CC : 참조
// Message.RecipientType.BCC : 숨은 참조
msg.setRecipient(Message.RecipientType.TO, to);
// 메일의 제목 지정
msg.setSubject("환영합니다.", "UTF-8");
// Transport는 메일을 최종적으로 보내는 클래스로 메일을 보내는 부분이다.
msg.setText("가입을 축하드립니다.", "UTF-8");
Transport.send(msg);
} catch (AddressException ae) {
System.out.println("AddressException : " + ae.getMessage());
} catch (MessagingException me) {
System.out.println("MessagingException : " + me.getMessage());
} catch (UnsupportedEncodingException e) {
System.out.println("UnsupportedEncodingException : " + e.getMessage());
}
}
}
반응형
'프로그래밍 > 자바, JDBC' 카테고리의 다른 글
JSTL (0) | 2020.07.24 |
---|---|
자바스크립트 비밀번호 암호화(SHA256) (0) | 2020.07.22 |
자바 난수 발생(랜덤 숫자) 구현(비밀번호 등) (0) | 2020.07.21 |
sts web.xml 파일 생성방법 (0) | 2020.07.21 |
MySQL COUNT(*) 갯수 출력 (0) | 2020.07.16 |