JavaMail - 간단한 Text 메시지 보내기
로컬에 설치한 SMTP로 보내려고 했더니, 외부로 나가질 않는데, 외부로 내보내는 설정을 못찾아서 그냥 Gmail SMTP 사용해서 보내봅니다.
Properties props = makeSMTPProperties();
Authenticator auth = getAutheticator(id, passwd);
Session session = Session.getDefaultInstance(props, auth);
URLName urln = new URLName("smtp", "smtp.gmail.com", 587, "", id, passwd);
SMTPSSLTransport trans = new SMTPSSLTransport(session, urln);
trans.setStartTLS(true);
try {
MimeMessage message = getMimeMessage(session, title, contents, to);
trans.send(message);
} catch (MessagingException e) {
e.printStackTrace();
} finally {
try {
trans.close();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
private Properties makeSMTPProperties() {
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.auth", "true");
return props;
}
private Authenticator getAutheticator(String id, String passwd) {
Authenticator auth = new SMTPAuthenticator(id, passwd);
Security.addProvider(new Provider());
return auth;
}
private class SMTPAuthenticator extends Authenticator {
private String id;
private String passwd;
public SMTPAuthenticator(String id, String passwd) {
this.id = id;
this.passwd = passwd;
}
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(id, passwd);
}
}
private MimeMessage getMimeMessage(Session session, String title,
String contents, String to) {
MimeMessage message = new MimeMessage(session);
try {
message.setSubject(title);
message.setText(contents);
message.setRecipient(RecipientType.TO, new InternetAddress(to));
} catch (MessagingException e) {
e.printStackTrace();
}
return message;
}
역시 대충 코딩한거라... 잡아먹는 예외처리 ㅠ.ㅠ 아무래도 이클립스 기본 템플릿 코드를 바꿔야 할듯.
throw new RuntimeException(e);
요렇게..
다음은 HTML 메시지 보내기