스마트웹앱콘텐츠전문가/JAVA

[java7]이메일

9D4U 2018. 5. 30. 16:44
728x90
반응형

[JavaMail api] : 애플리케이션에서 이메일 알림 기능 사용하기


1. javaMail 설치 : javax.mail-api-xxx.jar 혹은 메이븐 리포지터리 홈페이지에 가서 다운 받아도 됨.

   ※ 다운로드 시 유의 사항: sun(oracle) 그림있는 것을 사용해야 함


2. 이메일 보내기

-Transport() 메서드를 이용해 특정 수령인에게 이 메일을 보낼 수 있음.

예시) gmail 사용

private void start(){

//Propertis 객체에 JavaMail 서비스에 필요한 속성을 설정

Properties properties = new Properties();

properties.put("mail.smtp.host", "smtp.gmail.com");

properties.put("mail.smtp.auth", "true");

/*추가적으로 필요 tls 연관*/

properties.put("mail.smtp.starttls.enable", "true");

properties.put("mail.smtp.port", "587");

/*이메일을 보내기 위한 접속 정보를 담고 있는 javax.mail.Session을 불러옴*/

Session session = Session.getDefaultInstance(properties, new MessageAuthenticator("username", "password"));

//메세지 보내기

Message message = new MimeMessage(session);

try{

message.setFrom(new InternetAddress("username"));

message.setRecipient(Message.RecipientType.TO, new InternetAddress("receiver"));

message.setSubject("Subject");

message.setContent("This is a message", "text/plain");

/*메일을 보냄*/

Transport.send(message);

System.out.println("Done");

}catch(MessagingException e){

e.printStackTrace();

System.out.println("fail");

}

}

3. 이메일에 파일 첨부하기

- 여러 부분을 가지는 메시지(복수로 된 메시지)를 생성하면 파일이나 이미지 같은 첨부물을 보낼 수 있음.

  여러 부분을 가지고 있는 메시지를 MIME(Multipurpose Internet Mail Extensions) 메시지라고 부르는데,

  javax.mail API의 MimeMessage 클래스를 가지고 사용함.

※ attachFile()메서드는 1.4.x버전대에서만 가지고 있는 듯 보입니다.


예시)

/*파일 첨부를 하기 위해 Mime 메시지 부분 생성*/

MimeBodyPart mbodyPart = new MimeBodyPart();

mbodyPart.setContent("This is a file attach message", "text/plain");

MimeBodyPart fbodyPart = new MimeBodyPart();

fbodyPart.attachFile("attach.txt");

Multipart multipart = new MimeMultipart();

multipart.addBodyPart(mbodyPart);

multipart.addBodyPart(fbodyPart);

message.setContent(multipart);

/**/

4. 그룹에게 이메일 보내기 : 여러명의 수령인

- setRecipients() 메서드를 이용 : 이 메서드에 Address 객체 배열을 받음.

cf. setRecipients() 메서드의 인자값 중의 하나인 RecipientType 중

    BCC를 사용하게 되면 보내고자 하는 이메일에 모든 수령인이 표시되지 않게 됨.

    (스팸메일로 분류되기도 가능성 내포.)


5. 이메일 확인하기

- 해당 이메일 계정에 새롱누 메일이 왔는지 확인함.

: javax.mail.Store를 이용해 IMAP(Internet Message Access Protocol) 이메일 계정에 연결하고,

   질의를 보내 이메일 계정의 메시지를 얻어옴.


  ※ javax.mail.Store 객체 : 이메일 메일 박스 정보에 접근 가능.(스토어를 생성하고 inbox 폴더를 요청하면 IMAP계정의 메인 메일 박스에 접근 가능)

     javax.mail.Folder 객체 : inbox의 메시지를 내려 받을 수 있음.

     javax.mail.Flags 객체 

     IMAP :

예시) IMAP계정에 연결하고 그 계정으로 부터 마지막 다섯 개의 메시지를 얻어오고 그 메시지들을 read로 표시함.

Session session = Session.getDefaultInstance(properties, null);

Store store = session.getStore("imaps");

store.connect("host", "username", "password");

System.out.println(store);

Folder inbox = store.getFolder("Inbox");

inbox.open(Folder.READ_WRITE);

int messageCount = inbox.getMessageCount();

int startMessage = messageCount - 5;

int endMessage = messageCount;

if(messageCount < 5){

startMessage = 0;

}

Message messages[] = inbox.getMessages(startMessage, endMessage);

for(Message message : messages){

boolean hasBeenRead = false;

for(Flags.Flag flag : message.getFlags().getSystemFlags()){

if(flag == Flags.Flag.SEEN){

hasBeenRead = true;

break;

}

}

message.setFlag(Flags.Flag.SEEN, true);

System.out.println(message.getSubject() + " " + (hasBeenRead? "(read)" : "") + message.getContent());

}

inbox.close(true);

6. 이메일 계정 모니터링하기

- 한 계정에 이메일이 왔을 때를 모니터링해 이메일의 콘텐츠에 따라 처리하고자 함.

  : 5.이메일 확인하기 내용에서 IMAP 플래그 조작을 추가해 애플리케이션에 강력한 이메일 모니터링 기능을 생성.

728x90

'스마트웹앱콘텐츠전문가 > JAVA' 카테고리의 다른 글

URL 유효성 검사  (0) 2019.02.21
[자바7]동시성  (0) 2018.06.05
[자바7]입출력  (0) 2018.05.29
[자바7]숫자와 날짜  (0) 2018.05.28
[Java7]문자열  (0) 2018.05.28