티스토리 뷰

웹개발/Java

[Java] Gmail SMTP 메일 송신 예제

신수동이 2017. 1. 21. 19:35
구글 SMTP 메일 송신 예제 

메일 송신이 가능하기 위한 준비가 필요하다. 

1. mail.jar 라이브러리 추가 

2. gmail 계정 환경설정 



구글 gmail 인증을 위한 Class

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

//구글 gmail 인증을 위한 Class
public class MyAuthentication extends Authenticator {
      
    PasswordAuthentication pa;
 
    public MyAuthentication(){	//생성자를 통해 구글 ID/PW 인증
         
        String id = "구글 mail ID";       // 구글 ID
        String pw = "비밀번호";          // 구글 비밀번호
 
        // ID와 비밀번호를 입력한다.
        pa = new PasswordAuthentication(id, pw);
    }
 
    // 시스템에서 사용하는 인증정보
    public PasswordAuthentication getPasswordAuthentication() {
        return pa;
    }
}


구글 gmail 발송 코드

import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JOptionPane;

public class GmailSend{
//전역변수 사용안함.
	
	//action 
	public void GmailSet(String user, String text, String content){
		Properties p = System.getProperties();
        p.put("mail.smtp.starttls.enable", "true");     
        p.put("mail.smtp.host", "smtp.gmail.com");      // smtp 서버 호스트
        p.put("mail.smtp.auth","true");
        p.put("mail.smtp.port", "587");                 // gmail 포트
           
        Authenticator auth = new MyAuthentication();	//구글 계정 인증
         
        //session 생성 및  MimeMessage생성
        Session session = Session.getDefaultInstance(p, auth);
        MimeMessage msg = new MimeMessage(session);
        String fromName = "발신자 닉네임";
        String charSet = "UTF-8";
        
        try{
            // 편지보낸시간 설정
            msg.setSentDate(new Date());
             
            // 송신자 설정
            InternetAddress from = new InternetAddress() ;
            from = new InternetAddress(new String(fromName.getBytes(charSet), "8859_1") + "<발신자 구글 이메일@gmail.com>");
            msg.setFrom(from);
             
            // 수신자 설정
            InternetAddress to = new InternetAddress(user);
            msg.setRecipient(Message.RecipientType.TO, to);
            
            // 제목 설정
            msg.setSubject(text, "UTF-8");
            
            msg.setText(content, "UTF-8");	//내용 설정
            
            // 메일 송신
            Transport.send(msg);	
            
            System.out.println("메일 발송을 완료하였습니다.");
        }catch (AddressException addr_e) {	//예외처리 주소를 입력하지 않을 경우
        	JOptionPane.showMessageDialog(null, "메일을 입력해주세요", "메일주소입력", JOptionPane.ERROR_MESSAGE);
            addr_e.printStackTrace();
        }catch (MessagingException msg_e) {	//메시지에 이상이 있을 경우
        	JOptionPane.showMessageDialog(null, "메일을 제대로 입력해주세요.", "오류발생", JOptionPane.ERROR_MESSAGE);
            msg_e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

실행 코드는 다음과 같이 입력하면 메일이 발송된다.
GmailSend mail = new GmailSend();
mail.GmailSet("발신자 구글 이메일@gmail.com", "제목", "내용");


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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 29 30
글 보관함