2019. 4. 4. 14:52ㆍJavaScript
###라이브러리 확인
#1 HTML
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>관리자 이메일 쓰기</title> </head> <body> <h1>MultiPartEmail</h1> <form action="multipartEmail.jsp" method="post" enctype="multipart/form-data"> 받는사람 이메일주소: <input type="text" name="receiver"><br> 메일 제목: <input type="text" name="subject"><br> 첨부 파일: <input type="file" name="fileName"><br> 메일 내용: <textarea rows="7" cols="40" name="content"></textarea><br> <button type="submit">전송</button> </form> </body> </html> |
#2 JSP
<%@page import="org.apache.commons.mail.EmailAttachment"%> <%@page import="org.apache.commons.mail.MultiPartEmail"%> <%@page import="java.io.File"%> <%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%> <%@page import="com.oreilly.servlet.MultipartRequest"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% //(1) 업로드 작업 // 1 request
// 2 upload 폴더 만들고 물리적 경로 //ServletContext application = request.getServletContext(); => 이미존재 String realPath = application.getRealPath("/temp"); System.out.println("realPath : " + realPath);
// 3 파일업로드 최대크기 제한값 int maxPostSize = 1024 * 1024 * 10; // 1024byte * 1024 * 10; (업로드 10MB 제한)
// 4 한글처리 유니코드로 설정 "utf-8"
// 5 업로드하는 파일명이 기존 업로드된 파일명과 같은 경우 => 파일명 자동변경 정책
// 파일업로드 처리 완료! MultipartRequest multi = new MultipartRequest(request, realPath, maxPostSize, "utf-8", new DefaultFileRenamePolicy()); // 업로드한 파일이름 가져오기 String fileName = multi.getFilesystemName("fileName");
File file = new File(realPath, fileName); System.out.println("파일 경로: " + file.getAbsolutePath()); // 파일의 절대경로
// (2) 파일첨부 이메일 전송 작업 // 첨부파일 객체준비 EmailAttachment attachment = new EmailAttachment(); attachment.setPath(realPath+"/"+fileName); attachment.setDescription("파일에 대한 설명"); attachment.setName(fileName); // 첨부파일 이름 => 필수사항은 아님
MultiPartEmail multiPartEmail = new MultiPartEmail();
// 파라미터 가져오기 String receiver = multi.getParameter("receiver"); String subject = multi.getParameter("subject"); String content = multi.getParameter("content");
long beginTime = System.currentTimeMillis();// 시작시간 설정
// SMTP 서버 연결 설정 // SMTP 서버를 daum으로 했기 때문에 daum 계정으로 접속 multiPartEmail.setHostName("smtp.daum.net"); multiPartEmail.setSmtpPort(465); // 465(SSL방식) or 587(TLS방식) multiPartEmail.setAuthentication("id", "password"); // 아이디,패스워드 multiPartEmail.setSSLOnConnect(true); // SSL 접속 활성화 multiPartEmail.setStartTLSEnabled(true); // TLS 접속 활성화
// 보내는 사람=> daum으로 SMTP 서버로 연결했기 때문에 보내는 메일도 daum이 되어야한다 multiPartEmail.setFrom("whdgus4501@daum.net","테스터","UTF-8"); // 받는 사람 multiPartEmail.addTo(receiver,"받는 사람","UTF-8");
// 이메일에 추가될 내용 설정 multiPartEmail.setSubject(subject); //제목 multiPartEmail.setMsg(content); multiPartEmail.attach(attachment); // 첨부파일 추가
//* 지연시간을 줄이기 위한 방법으로 스레드로 이메일 전송 new Thread(new Runnable() { @Override public void run() { try{ multiPartEmail.send(); long execTime = System.currentTimeMillis() - beginTime; System.out.println("이메일 전송에 걸린시간: "+execTime); }catch(Exception e){} } }).start(); %> <script> alert('메일이 전송되었습니다.'); history.back(); </script> |
'JavaScript' 카테고리의 다른 글
팝업창에 변수 넘기기 (0) | 2019.08.20 |
---|---|
Connection Polling(커넥션 폴링) -OracleDB,H2DB (0) | 2019.04.05 |
이메일 전송하기 (0) | 2019.04.04 |
DB연동이 된 Chart(표) 사용하기 [막대그래프,ColumnChart] (0) | 2019.04.03 |
Chart(표) 사용하기 [막대그래프,ColumnChart] (0) | 2019.04.03 |