자바로 메일 보내기..

우선  mail.jar 파일이 필요하다.


https://mvnrepository.com/artifact/javax.mail/mail

메이븐 사이트에서 중간에 버전을 클릭하고 들어가서 Download 링크를 클릭하여 다운받는다.


자바 소스를 코딩한다.


import java.util.Properties;


import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;


public class Main {


public static void main(String[] args) {

String mailProtocol = "smtp";

String mailHost = "smtp.gmail.com";

String mailPort = "587";

String mailId = "abc@gmail.com"; // 구글계정

String mailPassword = "abc"; // 구글계정 비밀번호 

String fromName = "보내는사람이름";

String fromEmail = "abc@gmail.com"; // 보내는 사람 메일

String toName = "받는사람이름";

String toEmail = "abc@daum.net"; // 받는사람메일

String mailTitle = "메일 타이틀입니다.";

String mailContents = "메일 내용입니다.";

String debugMode = "false";

String authMode = "true";

try {

boolean debug = Boolean.valueOf(debugMode).booleanValue();


Properties mailProps = new Properties();

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

mailProps.setProperty("mail.transport.protocol", mailProtocol); 

mailProps.put("mail.debug", debugMode);

mailProps.put("mail.smtp.host", mailHost);

mailProps.put("mail.smtp.port", mailPort);

mailProps.put("mail.smtp.connectiontimeout", "5000");

mailProps.put("mail.smtp.timeout", "5000");  

mailProps.put("mail.smtp.auth", authMode);

Session msgSession = null;

if(authMode.equals("true")) {

       Authenticator auth = new MyAuthentication(mailId, mailPassword);

msgSession = Session.getInstance(mailProps, auth);

} else {

msgSession = Session.getInstance(mailProps, null); 

}

msgSession.setDebug(debug);

MimeMessage msg = new MimeMessage(msgSession);

msg.setFrom(new InternetAddress(fromEmail, fromName));

msg.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail, toName));

msg.setSubject(mailTitle);

msg.setContent(mailContents, "text/html; charset=euc-kr");

// 스태틱함수로 직접 보내지 않고 객체를 이용해서 보내고 객체를 닫아준다. 

Transport t = msgSession.getTransport(mailProtocol);

try {

t.connect();

t.sendMessage(msg, msg.getAllRecipients());

} finally {

 t.close();

}

 

} catch(Exception e) {

e.printStackTrace();

}

}


}


class MyAuthentication extends Authenticator {

    PasswordAuthentication pa;

    public MyAuthentication(String mailId, String mailPass) {

        pa = new PasswordAuthentication(mailId, mailPass);  

    }

    public PasswordAuthentication getPasswordAuthentication() {

        return pa;

    }

}



위 소스를 이용하여 메일을 발송한다.

그런데 gmail 설정에서 권한이 없는 경우

javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:319)
at javax.mail.Service.connect(Service.java:169)
at javax.mail.Service.connect(Service.java:118)
at Main.main(Main.java:64)

와 같은 에러가 발생한다.


구글 계정관리에 들어가서 
가장 아래부분에 있는
보안 수준이 낮은 앱 허용을 사용으로 세팅해 주고 다시 발송하면 발송이 될 것이다.






+ Recent posts