본문 바로가기
프로그래밍/JAVA

[JAVA] JAVA에서 네이버 메일을 이용한 간단한 푸싱만들기

by 돌및쓰고 2020. 5. 19.

아마존에서 판매중엔 제품중에는 판매자가 웨어하우스인 제품들이 있다

이 제품들은 구매자들이 여러가지 이유로 반품한 상품을 아마존창고에서 검수 후 재포장하며 판매합니다

 

웨어하우스 제품은 상태가 좋은경우가 많고 가격도 많이 저렴해서 많이 구매하는데 

이로인해 제품이 올라오면 짧은 시간안에 모두 판매되곤 합니다

 

그런데 상품이 올라오는 시간은 한국시간으로 새벽 12시 ~ 3시에 올라오는데

언제 올라올지도 모르는 재고를 기다릴순 없으니

 

상품페이지를 지속적으로 관찰하는 프로그램을 만들어보기로 했습니다.

 

필요한 기능은

1. 아마존 상품페이지를 파싱하여 가격을 추려주는 기능

2. 원하는 가격의 상품이 나왔을때 나한테 알려주는 기능

입니다

 

오늘 포스팅할 내용은 2번의 내용입니다

 

 

먼저 

안드로이드에서 푸시기능은 파이어베이스를 이용해 만들지만

파이어베이스를 이용할경우 단지 알림 하나를 위해

안드로이드 앱을 만들고 파이어베이스 세팅까지 해야하는

복잡한 과정이 필요합니다.

 

그래서! 

 

그 방법대신

 

네이버앱이 제공해주는 메일알림을 이용하여 JAVA에서 푸시알람을 제작하는 방법을 작성해보려고 합니다

 

먼저 JAVA에서 메일을 보내려면 SMTP기능을 활성화 해야하는데

네이버 메일 환경설정에 들어가 SMTP기능을 사용함에 체크하면 됩니다.

 

그리고 JAVA에서 메일을 보낼수 있는 라이브러리인 JAVAMAIL을 사용하면됩니다.

https://github.com/javaee/javamail/releases

 

javaee/javamail

JavaMail API Reference Implementation. Contribute to javaee/javamail development by creating an account on GitHub.

github.com

package asd;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class MailSender {
    static final String FROM = "사용자@naver.com";
    static final String FROMNAME = "사용자";
    static final String TO = "사용자@naver.com";

    static final String SMTP_USERNAME = "사용자@naver.com";
    static final String SMTP_PASSWORD = "비밀번호";

    static final String HOST = "smtp.naver.com";
    static final int PORT = 587;

    static String SUBJECT = "메일 제목";

    static final String BODY = String.join(
            System.getProperty("line.separator"),
            "<h1>FIRE HD</h1>"
    );

    public static void sendPush(double price) throws Exception {
        if (price <= 0) {
            SUBJECT = "ERR 크롤러 다운 : " + price;
        } else
            SUBJECT = "가격알림 : " + price;
        Properties props = System.getProperties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.port", PORT);
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.ssl.trust", HOST);

        Session session = Session.getDefaultInstance(props);

        MimeMessage msg = new MimeMessage(session);
        msg.setFrom(new InternetAddress(FROM, FROMNAME));
        msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO));
        msg.setSubject(SUBJECT);
        msg.setContent(BODY, "text/html;charset=euc-kr");

        Transport transport = session.getTransport();

        try {
            System.out.println("Sending...");
            transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);
            transport.sendMessage(msg, msg.getAllRecipients());

            System.out.println("Email sent!");
        } catch (Exception ex) {
            ex.printStackTrace();

        } finally {
            transport.close();
        }
    }
}

 

'프로그래밍 > JAVA' 카테고리의 다른 글

[객체지향] SOLID 5원칙  (0) 2019.11.29

댓글