English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JSP를 사용하여 이메일 전송 기능을 구현하는 것은 매우 간단하지만, JavaMail API가 필요하며 JavaBean Activation Framework을 설치해야 합니다.
Java 웹사이트에서 최신 버전의 JAF를 다운로드할 수 있습니다. JavaMail에서, 웹 페이지 오른쪽에 있는 Downloads 链接을 클릭하여 다운로드하세요。
Java 웹사이트에서 최신 버전의 JAF를 다운로드할 수 있습니다. JAF(버전 1.1.1)。
이 파일을 다운로드하고 압축을 풀어보세요. 루트 디렉토리에서는 일련의 jar 패키지를 볼 수 있습니다. mail.jar 패키지와 activation.jar 패키지를 CLASSPATH 변수에 추가하세요.
이 예제는 어떻게 localhost에서 간단한 이메일을 보내는지 보여줍니다. localhost가 네트워크에 연결되어 있고 이메일을 보낼 수 있는지 확인해 주세요. 동시에 mail.jar 패키지와 activation.jar 패키지가 CLASSPATH 변수에 추가되어 있는지 다시 확인해 주세요.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%> <%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*"%> <% String result; // 받는 사람의 이메일 String to = "[email protected]"; // 보내는 사람의 이메일 String from = "[email protected]"; // 당신이 로컬 호스트에서 이메일을 보내는 것을 가정합니다 String host = "localhost"; // 시스템 속성 객체를 가져옵니다 Properties properties = System.getProperties(); // 이메일 서버를 설정합니다 properties.setProperty("mail.smtp.host", host); // 기본적인 Session 객체를 가져옵니다. Session mailSession = Session.getDefaultInstance(properties); try{ // 기본적인 MimeMessage 객체를 생성합니다. MimeMessage message = new MimeMessage(mailSession); // From: 헤더 필드 설정 message.setFrom(new InternetAddress(from)); // To: 헤더 필드 설정 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Subject: 헤더 필드 설정 message.setSubject("This is the Subject Line!"); // 지금 설정된 실제 메시지 message.setText("This is actual message"); // 메시지 전송 Transport.send(message); result = "Sent message successfully...."; }catch (MessagingException mex) { mex.printStackTrace(); result = "Error: unable to send message...."; } %> <html> <head> <title>JSP를 사용하여 이메일 보내기</title> </head> <body> <center> <h1>JSP를 사용하여 이메일 보내기</h1> </center> <p align="center"> <% out.println("Result: " + result + "\n"); %> </p> </body> </html>
지금 http:에 접근하세요://localhost:8080/SendEmail.jsp, 이는 [email protected]에 이메일을 보내고 다음과 같은 결과를 표시합니다:
JSP를 사용하여 이메일 보내기 Result: 메시지 성공적으로 전송됨....
이메일을 여러 명에게 보내고 싶다면 다음과 같은 메서드를 사용하여 여러 이메일 주소를 지정할 수 있습니다:
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
파라미터 설명:
type: 이 값은 TO(수신자), CC 또는 BCC로 설정됩니다. CC는 Carbon Copy(참조 복사), BCC는 Blind Carbon Copy(숨겨진 참조 복사)를 의미합니다. 예제 프로그램에서는 TO를 사용합니다.
addresses: 이메일 주소 배열입니다. 지정된 이메일 주소를 사용할 때는 InternetAddress() 메서드를 사용해야 합니다.
이 예제는 간단한 HTML 이메일을 전송합니다. localhost가 네트워크에 연결되어 있고 이메일을 전송할 수 있는지 확인해 주세요. 동시에 mail.jar 패키지와 activation.jar 패키지가 CLASSPATH 변수에 추가되어 있는지 다시 확인해 주세요.
이 예제는 이전 예제와 매우 유사하지만, 이 예제에서는 setContent() 메서드를 사용하여 "text}}/html"를 두 번째 매개변수로 전달하여 메시지에 HTML 내용이 포함되었음을 나타냅니다.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%> <%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*"%> <% String result; // 받는 사람의 이메일 String to = "[email protected]"; // 보내는 사람의 이메일 String from = "[email protected]"; // 당신이 로컬 호스트에서 이메일을 보내는 것을 가정합니다 String host = "localhost"; // 시스템 속성 객체를 가져옵니다 Properties properties = System.getProperties(); // 이메일 서버를 설정합니다 properties.setProperty("mail.smtp.host", host); // 기본적인 Session 객체를 가져옵니다. Session mailSession = Session.getDefaultInstance(properties); try{ // 기본적인 MimeMessage 객체를 생성합니다. MimeMessage message = new MimeMessage(mailSession); // From: 헤더 필드 설정 message.setFrom(new InternetAddress(from)); // To: 헤더 필드 설정 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Subject: 헤더 필드 설정 message.setSubject("This is the Subject Line!"); // HTML 메시지 설정 message.setContent("<h1>이 실제 메시지는</h1>", "text/html" ); // 메시지 전송 Transport.send(message); result = "Sent message successfully...."; }catch (MessagingException mex) { mex.printStackTrace(); result = "Error: unable to send message...."; } %> <html> <head> <title>JSP를 사용하여 HTML 이메일 보내기</title> </head> <body> <center> <h1>JSP를 사용하여 이메일 보내기</h1> </center> <p align="center"> <% out.println("Result: " + result + "\n"); %> </p> </body> </html>
이제 위의 JSP 파일을 사용하여 HTML 메시지의 이메일을 보내기 위해 시도할 수 있습니다.
이 예제는 첨부 파일이 포함된 이메일을 보내는 방법을 보여줍니다.
<%@ page import="java.io.*,java.util.*,javax.mail.*"%> <%@ page import="javax.mail.internet.*,javax.activation.*"%> <%@ page import="javax.servlet.http.*,javax.servlet.*"%> <% String result; // 받는 사람의 이메일 String to = "[email protected]"; // 보내는 사람의 이메일 String from = "[email protected]"; // 당신이 로컬 호스트에서 이메일을 보내는 것을 가정합니다 String host = "localhost"; // 시스템 속성 객체를 가져옵니다 Properties properties = System.getProperties(); // 이메일 서버를 설정합니다 properties.setProperty("mail.smtp.host", host); // 기본적인 Session 객체를 가져옵니다. Session mailSession = Session.getDefaultInstance(properties); try{ // 기본적인 MimeMessage 객체를 생성합니다. MimeMessage message = new MimeMessage(mailSession); // From: 헤더 필드 설정 message.setFrom(new InternetAddress(from)); // To: 헤더 필드 설정 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Subject: 헤더 필드 설정 message.setSubject("This is the Subject Line!"); // 메시지 부분 생성 BodyPart messageBodyPart = new MimeBodyPart(); // 메시지 채우기 messageBodyPart.setText("This is message body"); // 멀티미디어 메시지 생성 Multipart multipart = new MimeMultipart(); // 텍스트 메시지 부분 설정 multipart.addBodyPart(messageBodyPart); // 부록 부분 messageBodyPart = new MimeBodyPart(); String filename = "file.txt"; DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // 전체 메시지 전송 message.setContent(multipart ); // 메시지 전송 Transport.send(message); String title = "Send Email"; result = "Sent message successfully...."; }catch (MessagingException mex) { mex.printStackTrace(); result = "Error: unable to send message...."; } %> <html> <head> <title>Send Attachement Email using JSP</title> </head> <body> <center> <h1>Send Attachement Email using JSP</h1> </center> <p align="center"> <% out.println("Result: " + result + "\n"); %> </p> </body> </html>
이메일 서버가 사용자 인증을 위해 사용자 이름과 비밀번호가 필요하다면, 다음과 같이 설정할 수 있습니다:
properties.setProperty("mail.user", "myuser"); properties.setProperty("mail.password", "mypwd");
HTML 양식을 사용하여 이메일을 받아들이고, request 객체를 통해 모든 이메일 정보를 가져옵니다:
String to = request.getParameter("to"); String from = request.getParameter("from"); String subject = request.getParameter("subject"); String messageText = request.getParameter("body");
이 정보를 얻은 후, 앞서 언급한 예제를 사용하여 이메일을 보낼 수 있습니다.