자바 애플리케이션에서 GMail이나 Yahoo나 핫메일을 써서 메일 보내는 방법

조회수 1644회

자바 애플리케이션에서 GMail 계정을 써서 메일 보내는게 가능한가요? 어떻게 하죠?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    일단 https://java.net/projects/javamail/pages/Home 여기에서 JavaMail API를 다운 받으시고 jar파일을 프로젝트에 추가하세요.

    그리고 아래 예제처럼하시면 됩니다.

    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    
    public class Main {
    
        private static String USER_NAME = "*****";  //지메일 아이디
        private static String PASSWORD = "********"; //지메일 비밀번호 
        private static String RECIPIENT = "lizard.bill@myschool.edu";
    
        public static void main(String[] args) {
            String from = USER_NAME;
            String pass = PASSWORD;
            String[] to = { RECIPIENT }; // 보낼 메일 목록
            String subject = "Java send mail example";  // 메일 제목
            String body = "Welcome to JavaMail!";       // 메일 내용
    
            sendFromGMail(from, pass, to, subject, body);
        }
    
        private static void sendFromGMail(String from, String pass, String[] to, String subject, String body) {
            Properties props = System.getProperties();
            String host = "smtp.gmail.com";
            props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.user", from);
            props.put("mail.smtp.password", pass);
            props.put("mail.smtp.port", "587");
            props.put("mail.smtp.auth", "true");
    
            Session session = Session.getDefaultInstance(props);
            MimeMessage message = new MimeMessage(session);
    
            try {
                message.setFrom(new InternetAddress(from));
                InternetAddress[] toAddress = new InternetAddress[to.length];
    
                // To get the array of addresses
                for( int i = 0; i < to.length; i++ ) {
                    toAddress[i] = new InternetAddress(to[i]);
                }
    
                for( int i = 0; i < toAddress.length; i++) {
                    message.addRecipient(Message.RecipientType.TO, toAddress[i]);
                }
    
                message.setSubject(subject);
                message.setText(body);
                Transport transport = session.getTransport("smtp");
                transport.connect(host, from, pass);
                transport.sendMessage(message, message.getAllRecipients());
                transport.close();
            }
            catch (AddressException ae) {
                ae.printStackTrace();
            }
            catch (MessagingException me) {
                me.printStackTrace();
            }
        }
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)