회원가입 - 이메일이나 기타 메시지 전송을 통해 본인 확인.
게시판에 글을 남긴 경우 답글이 왔는지 확인하는 경우
1.이메일
2.SMS(Short Message Service) - 유료(대행 업체를통해 신청해야 사용 가능)
3.Kakao Talk(우리나라 중심) - 회원가입을 해야한다.
4.아이폰은 자체적으로 있는게 있음 ..
이메일
메일을 작성하면 -> 메일서버로 작성 -> 상대방의 메일서버로 전송 -> 상대방이 메일서버 자체에서 가져올 수 있고 우체국 프로토콜(서버)을 통해 메일이 전송
smtp(Simple Mail Transfer Protocol)
메일서버 쓰기
계정 쪽에서 메일 계정 사용용의 보안등급 설정
프로그램이 이상하면 사진처럼 작성한 것들을 지우고 이클립스 재실행 해보기.
줄쳐진 코드들은 직접 입력한 것. 그리서 왼쪽에 jar파일들이 생성이 된 것.
1.인증을 위한 클래스 생성.
Brower를 눌러서 사진처럼 상속을 받는다.
package com.exam.mail;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
public class MyAuthenticator extends Authenticator {
// 구글에 로그인 할 수 있는 아이디
private String fromEmail;
// 구글에 로그인 할 수 있는 비밀번호(새롭게 생성된 16자리 만들었던 비밀번호)
private String fromPassword;
// 생성자를 통해 데이터들을 집어넣기
public MyAuthenticator(String fromEmail, String fromPassword) {
this.fromEmail = fromEmail;
this.fromPassword = fromPassword;
}
// 이 클래스의 아이디와 패스워드를 가지고 와서 로그인 시키
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// TODO Auto-generated method stub
return new PasswordAuthentication(fromEmail, fromPassword);
}
}
MailSender 클래스
package com.exam.mail;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
//메일을 보내는 본체 만들기
public class MailSender {
private String fromEmail;
private String fromPassword;
public MailSender(String fromEmail, String fromPassword) {
this.fromEmail = fromEmail;
this.fromPassword = fromPassword;
}
public void sendMail(String toEmail, String toName, String subject, String content) {
// Gogle SMTP 서버에 대한 접속환경 설정
try {
// 접속환경 설정
Properties props = new Properties();
// props.put("mail.smptp.starttls.enable", "true");
// props.put("mail.smptp.host", "smtp.gmail.com");
//
// // 접속 포트
// props.put("mail.smtp.port", "587");
// props.put("mail.smtp.auth", "true");
//
// props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
// props.put("mail.smtp.ssl.protocols", "TLSv1.2");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
// 인증 환경
MyAuthenticator authenticator = new MyAuthenticator(fromEmail, fromPassword);
// 인증에 통해서 접속
// 접속 상태
Session session = Session.getDefaultInstance(props, authenticator);
// 접속을 통해 메세지 형태 만들기
MimeMessage msg = new MimeMessage(session);
// 내가 전송할 것에 대한 형태 만들기
// 텍스트방식의 문자셋은 다국어 처리한다는
msg.setHeader("Content-type", "text/plain;charset=utf-8");
// 이 이메일의 이사람한테 보낼거야
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail, toName, "utf-8"));
msg.setSubject(subject);
msg.setContent(content,"text.plain; charset=utf-8");
// 보낼 시간 / 즉시 보내게 설정했음 특정 날짜 넣어주면 예약이 됨.
msg.setSentDate(new java.util.Date());
// 전송
Transport.send(msg);
System.out.println("메일이 전송되었습니다.");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
} catch (MessagingException e) {
// TODO Auto-generated catch block
System.out.println("[에러] : " + e.getMessage());
}
}
}
App 클래스
package com.exam.mail;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
// 구글 로그인을 위한 예약
MailSender mailSender = new MailSender("ehdwns977@gmail.com", "qpvnzdzyscrlrjoj");
// 메일을 보내기 위해
String toEmail = "marigold9797@gmail.com";
String toName = "이동준";
String subject = "주녕 ~";
String content = "반가워 ~ ";
// 이 메일들을 전송
mailSender.sendMail(toEmail, toName, subject, content);
}
}
모양 만들어서 전송 가능
MailSender 코드 html로 변경
msg.setHeader("Content-type", "text/html;charset=utf-8");
// 이 이메일의 이사람한테 보낼거야
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail, toName, "utf-8"));
msg.setSubject(subject);
msg.setContent(content,"text.html; charset=utf-8");
App 클래스 코드 html로 변경
package com.exam.mail;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
// 구글 로그인을 위한 예약
MailSender mailSender = new MailSender("구글 로그인 이메일", "비밀번호");
// 메일을 보내기 위해
String toEmail = "ehdwns977@gmail.com";
String toName = "테스터";
String subject = "테스트 메일 제목";
// String content = "반가워 ~ ";
// html로 작성 해보기
String content = "<html>"
+ "<head>"
+ "<meta charset='utf-8/>"
+ "</head>"
+ "<body>"
+ "<font color = 'blue'>내용 테스트</font>"
+ "</body>"
+ "</html>";
// 이 메일들을 전송
mailSender.sendMail(toEmail, toName, subject, content);
}
}
html 이미지 코드 추가
// html로 작성 해보기
String content = "<html>"
+ "<head>"
+ "<meta charset='utf-8/>"
+ "</head>"
+ "<body>"
+ "<font color = 'blue'>내용 테스트</font>"
+ "<img src ='https://t1.daumcdn.net/daumtop_chanel/op/20200723055344399.png'>"
+ "</body>"
+ "</html>";