Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- mysql if
- 모달
- formgroup
- ajax 사용 예시
- Router
- TAILWIND
- angular button
- modal
- prisma
- angular animation
- 옵저버블
- egov spring ajax 사용 예시
- ApexChart
- angular route
- summary
- 검색
- 앵귤러 모달
- Oracle LISTAGG 사용 예시
- angular modal
- 앵귤러 애니메이션
- Angular Router
- Ionic modal
- 스크롤 이벤트 감지
- 아이오닉 스크롤 이벤트
- route
- scroll
- 셀렉트박스 커스텀
- flex-1
- 스크롤 이벤트
- 호버
Archives
- Today
- Total
깜놀하는 해므찌로
Java Gmail Library 자바 Gmail 연동 / 이메일 전송 라이브러리 본문
반응형
SMALL
/* 메일 전송 */
public static void sendMail(String mail, String htmlContent, String ttl) throws Exception {
String host = "";
String useraddr = "";
String userpwd = "";
/* IMAP/SMTP 설정 */
Properties props = new Properties();
/* 호스트, 계정 비번 설정 */
host = "smtp.gmail.com";
useraddr = "아이디@gmail.com";
userpwd = "...";
/* Gmail 앱 비밀번호 : ... */
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.ssl.protocols", "TLSv1.2");
final String username = useraddr; // 계정
final String password = userpwd; // 비밀번호
// mailForm에 따른 메일 설정
/* Session 생성 */
Session session = Session.getInstance(props, new javax.mail.Authenticator() {
String userId = username;
String userPw = password;
protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
return new javax.mail.PasswordAuthentication(userId, userPw);
}
});
/* Message 설정 */
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(useraddr, MimeUtility.encodeText("안녕", "UTF-8", "B")));
message.setSender(new InternetAddress(useraddr)); // 발송인
message.setSubject(ttl); // 제목
session.setDebug(true); // 디버깅 여부
/* 내용 설정 */
String htmlContents = StringUtil.unEscape(htmlContent);
/* 한 명씩 전달하는 경우 */
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mail));
Multipart mp = new MimeMultipart();
MimeBodyPart mbp1 = new MimeBodyPart();
mbp1.setContent(htmlContents, "text/html;charset=UTF-8"); // 내용
mp.addBodyPart(mbp1);
MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
mc.addMailcap("text/html; x-java-content-handler=com.sun.mail.handlers.text_html");
mc.addMailcap("text/xml; x-java-content-handler=com.sun.mail.handlers.text_xml");
mc.addMailcap("text/plain; x-java-content-handler=com.sun.mail.handlers.text_plain");
mc.addMailcap("multipart/*; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
mc.addMailcap("message/rfc822; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
CommandMap.setDefaultCommandMap(mc);
message.setContent(mp);
Transport.send(message);
}
문제
1. 최근 Gmail 정책이 바껴 기존의 보안 레벨 낮춤 설정이 되지 않는다.
해결
1. 2단계 보안 인증을 완료하면 아래에 "앱 비밀번호" 란이 추가된 걸 볼 수 있다.
2. 클릭 후 앱 고유 비밀번호를 입력 받아 로그인 비밀번호로 활용하면 해당 앱만 사용할 수 있다.
3. 따라서 여기서 받은 비밀번호를 유저 비밀번호로 로직에 입력해주면 정상작동 한다.
반응형
LIST
'IT' 카테고리의 다른 글
Egov Spring 데이터 베이스 DB 연동 방법 (0) | 2022.07.07 |
---|---|
Python OCR 기반 tesseract 텍스트 인식 및 문자 연동 (0) | 2022.07.06 |
ajax 통신 JavaScript try catch / if 조건 에러 / ajax 존재하지 않는 페이지 정보 읽어오기 꿀팁! (0) | 2022.07.06 |
Egov Spring ajax json 비동기 통신 사용 예시 (0) | 2022.07.06 |
JavaScript popUp 팝업 하루 닫기 feat.쿠키 Cookie (0) | 2022.07.06 |