Java/JSP〃간단하고 정확한 문의 메일 보내기 기능 (SMTP)

반응형






이번에도 마찬가지로 웹사이트 or 회사 사이트에서 빠질 수 없는 기능이죠.  바로 문의 메일 보내기 기능입니다. 소스는 아주 허접하지만 간단하고 기능이 작동되는 것을 직접 확인했습니다.


먼저 메일을 보내기 위해서는 텍스트를 입력받는 VIEW 페이지와 SMTP 인증을 하는 JAVA클래스파일, 그리고 실제 기능이 들어간 JSP 파일 3가지만 있으면 됩니다.  설명은 소스를 보면서 하겠습니다.


필요한 JAR 파일 다운로드




 
View 페이지 ( faq.jsp )

// 여기에 자신의 이메일 계정 // 여기에 자신의 이메일 계정


사이트에 접속하면 보이는 뷰 페이지로 HTML이나 JSP파일들로 보통 만들죠. 파일명은 마음대로 지으셔도 되요.

대신 Form의 NAME명과, input 에 들어가는 NAME명이 가장 중요하다는것!! (파라미터를 받아오는 역활을 합니다.)

뷰페이지 전체 소스를 공개하고 싶지만..  부트스트랩이랑 스프링 다국어처리가 들어가서 보기 지저분해요. 그래서 필요한 부분만 적었습니다.


아래쪽에 Hidden으로 넣어논 to와 From은 아래 8번에서 정리할게요.



 SMTP 메일 인증 부분 ( SMTPAuthenticatior.java )


public class SMTPAuthenticatior extends Authenticator{	
	@Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("메일 ID","메일 PW");
    }
}


여기선 간단하게 SMTP를 지원하는 메일의 ID와 패스워드를 입력해줍니다. 




 실제 기능 페이지 ( mailSend.jsp) 


<%@page import="java.util.Map"%>
<%@page import="java.util.List"%>
<%@page import="javax.mail.Transport"%>
<%@page import="javax.mail.Message"%>
<%@page import="javax.mail.Address"%>
<%@page import="javax.mail.internet.InternetAddress"%>
<%@page import="javax.mail.internet.MimeMessage"%>
<%@page import="javax.mail.Session"%>
<%@page import="com.tide.homepage.mail.SMTPAuthenticatior"%>
<%@page import="javax.mail.Authenticator"%>
<%@page import="java.util.Properties"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
 
String company	= request.getParameter("company");
String name = request.getParameter("name");
String from = request.getParameter("from");
String to = request.getParameter("to");
String email = request.getParameter("email");
String number = request.getParameter("number");
String subject = request.getParameter("subject");
String content = request.getParameter("content");
 
Properties p = new Properties(); // 정보를 담을 객체
 
p.put("mail.smtp.host","smtp.mailplug.co.kr"); 
p.put("mail.smtp.port", "465");
p.put("mail.smtp.starttls.enable", "true");
p.put("mail.smtp.auth", "true");
p.put("mail.smtp.debug", "true");
p.put("mail.smtp.socketFactory.port", "465");
p.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
p.put("mail.smtp.socketFactory.fallback", "false");

 
try{
    Authenticator auth = new SMTPAuthenticatior();
    Session ses = Session.getInstance(p, auth);
     
    ses.setDebug(true);
    MimeMessage msg = new MimeMessage(ses); // 메일의 내용을 담을 객체  

    msg.setSubject(subject); //  제목 

    StringBuffer buffer = new StringBuffer();
    buffer.append("업체명 : ");
    buffer.append(company+"
"); buffer.append("담당자 : "); buffer.append(name+"
"); buffer.append("연락처 : "); buffer.append(number+"
"); buffer.append("이메일 : "); buffer.append(email+"
"); buffer.append("제목 : "); buffer.append(subject+"
"); buffer.append("내용 : "); buffer.append(content+"
"); Address fromAddr = new InternetAddress(from); msg.setFrom(fromAddr); Address toAddr = new InternetAddress(to); msg.addRecipient(Message.RecipientType.TO, toAddr); // 받는 사람 msg.setContent(buffer.toString(), "text/html;charset=UTF-8"); // 내용 Transport.send(msg); // 전송 } catch(Exception e){ e.printStackTrace(); return; } %>


JSP페이지에서 기능을 구현한 간단한 메일 보내기 기능입니다. 

1. 파라미터를 받을 객체를 생성 (String)

2. Properties에 SMTP 메일 정보를 담음

3. 위에서 작성한 SMTPAuthenticatior를 불러와 계정인증을 하고 

4. 세션정보를 MimeMessages에 set으로 담음

5. MimeMessages에서 지원하는 제목과 보내는 메일, 받는 메일은 각각 메소드를 이용하고,

6. 내용에는 StringBuffer를 통해 6가지 내용을 담음

7. 현재 네이버나 구글은 SMTP기능이 잘 안된다 해서 저는 메일플러그 계정을 이용함.

8. 마찬가지로 계정인증문제로 보내는 메일이 인증이 되야하고, 문의는 내 메일로 받아야 하니 똑같은 메일주소가 됨. 그래서 파라미터를 View에 Hidden값으로 넣어놈.

9. 끝



정말 코드는 이게 전부인 간단한 메일 발송입니다. 저는 메일플러그를 이용했으나 그게 없으신 분들은 네이버나 구글 SMTP를 이용해보셔요.

반응형