English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Servlet를 사용하여 이메일을 보내는 것은 매우 간단합니다만, 먼저 여러분의 컴퓨터에 설치해야 합니다 JavaMail API 와 Java Activation Framework) JAF)。
가장 최신 버전의 Java 웹사이트에서 다운로드할 수 있습니다: JavaMail웹페이지의 오른쪽에 있는 다운로드 링크를 클릭하여 다운로드하세요。
가장 최신 버전의 Java 웹사이트에서 다운로드할 수 있습니다: JAF(버전) 1.1.1)。
도서관에서 제공하는 다운로드 링크를 사용할 수도 있습니다:
이 파일을 다운로드하고 압축을 풀어서, 새로 생성된 최상위 디렉토리에서는 이 두 개의 애플리케이션의 일부 jar 파일을 찾을 수 있습니다. 이 jar 파일을 mail.jar 와 activation.jar 파일을 CLASSPATH에 추가하세요.
아래의 예제는 사용자 컴퓨터에서 간단한 이메일을 보내는 것입니다. 여기서는 사용자의로컬 호스트인터넷에 연결되어 있으며 이메일을 보내는 데 지원됩니다. 동시에 Java Email API 패키지와 JAF 패키지의 모든 jar 파일이 CLASSPATH에서 사용 가능하도록 확인하십시오.
// 파일 이름 SendEmail.java import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 받는 사람의 이메일 ID String to = "[email protected]"; // 보내는 사람의 이메일 ID String from = "[email protected]"; // 당신이 로컬 호스트에서 이메일을 보내는 것을 가정합니다 String host = "localhost"; // 시스템의 속성을 가져옵니다 Properties properties = System.getProperties(); // 이메일 서버를 설정합니다 properties.setProperty("mail.smtp.host", host); // 기본적인 Session 객체를 가져옵니다 Session session = Session.getDefaultInstance(properties); // 응답 내용 유형을 설정합니다 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try{ // 기본적인 MimeMessage 객체를 생성합니다 MimeMessage message = new MimeMessage(session); // 헤더의 From: 헤더 필드를 설정합니다. message.setFrom(new InternetAddress(from)); // 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); String title = "이메일 전송"; String res = "메시지가 성공적으로 전송되었습니다..."; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor="#f0f0f0">\n" + "<h1 align="center">" + title + "</h1>\n" + "<p align="center">" + res + "</p>\n" + "</body></html>"); } mex.printStackTrace(); } } }
이제 위의 Servlet을 컴파일하고 web.xml 파일에 다음 항목을 생성해 보겠습니다:
.... <servlet> <servlet-name>SendEmail</servlet-name> <servlet-class>SendEmail</servlet-class> </servlet> <servlet-mapping> <servlet-name>SendEmail</servlet-name> <url-pattern>/SendEmail</url-pattern> </servlet-mapping> ....
이제 URL http:을 통해 접근하세요//localhost:8080/SendEmail을 호출하여 이 Servlet을 보내면, 지정된 이메일 ID로 이메일을 보내게 됩니다 [email protected]이를 통해 다음과 같은 응답이 표시됩니다:
이메일 보내기메시지를 성공적으로 전송했습니다... |
여러 수신자에게 이메일을 보내려면 다음 메서드를 사용하여 여러 이메일 ID를 지정하십시오:
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
매개변수에 대한 설명은 다음과 같습니다:
type:이는 TO, CC 또는 BCC로 설정됩니다. 여기서 CC는 복사문서, BCC는 숨겨진 복사문서를 의미합니다. 예를 들어 Message.RecipientType.TO。
addresses:이메일 ID의 배열입니다. 이메일 ID를 지정할 때는 InternetAddress() 메서드를 사용해야 합니다.
아래의 예제는 사용자 컴퓨터에서 HTML 형식의 이메일을 보내는 것입니다. 여기서는 사용자의로컬 호스트인터넷에 연결되어 있으며 이메일을 보내는 데 지원됩니다. 동시에 Java Email API 패키지와 JAF 패키지의 모든 jar 파일이 CLASSPATH에서 사용 가능하도록 확인하십시오.
이 예제는 이전 예제와 매우 유사하지만, 여기서는 setContent() 메서드를 사용하여 두 번째 매개변수를 "text"로 설정합니다./html"의 내용을 지정하는 매개변수입니다.
이 예제를 사용하여 내용 크기 제한 없는 HTML 내용을 보낼 수 있습니다.
// 파일 이름 SendEmail.java import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 받는 사람의 이메일 ID String to = "[email protected]"; // 보내는 사람의 이메일 ID String from = "[email protected]"; // 당신이 로컬 호스트에서 이메일을 보내는 것을 가정합니다 String host = "localhost"; // 시스템의 속성을 가져옵니다 Properties properties = System.getProperties(); // 이메일 서버를 설정합니다 properties.setProperty("mail.smtp.host", host); // 기본적인 Session 객체를 가져옵니다 Session session = Session.getDefaultInstance(properties); // 응답 내용 유형을 설정합니다 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try{ // 기본적인 MimeMessage 객체를 생성합니다 MimeMessage message = new MimeMessage(session); // 헤더의 From: 헤더 필드를 설정합니다. message.setFrom(new InternetAddress(from)); // message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Subject: 헤더 필드를 설정합니다 message.setSubject("This is the Subject Line!"); // 실제 HTML 메시지를 설정합니다. 내용 크기 제한 없음 message.setContent("<h1>This is actual message</h1> "text/html" ); // 메시지를 보냅니다 Transport.send(message); String title = "이메일 전송"; String res = "메시지가 성공적으로 전송되었습니다..."; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor="#f0f0f0">\n" + "<h1 align="center">" + title + "</h1>\n" + "<p align="center">" + res + "</p>\n" + "</body></html>"); } mex.printStackTrace(); } } }
위의 Servlet을 컴파일하고 실행하여 주어진 이메일 ID에 HTML 메시지를 보내십시오.
아래의 예제는 당신의 컴퓨터에서 첨부 파일이 포함된 이메일을 보내는 것을 가정합니다.로컬 호스트인터넷에 연결되어 있으며 이메일을 보내는 데 지원됩니다. 동시에 Java Email API 패키지와 JAF 패키지의 모든 jar 파일이 CLASSPATH에서 사용 가능하도록 확인하십시오.
// 파일 이름 SendEmail.java import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 받는 사람의 이메일 ID String to = "[email protected]"; // 보내는 사람의 이메일 ID String from = "[email protected]"; // 당신이 로컬 호스트에서 이메일을 보내는 것을 가정합니다 String host = "localhost"; // 시스템의 속성을 가져옵니다 Properties properties = System.getProperties(); // 이메일 서버를 설정합니다 properties.setProperty("mail.smtp.host", host); // 기본적인 Session 객체를 가져옵니다 Session session = Session.getDefaultInstance(properties); // 응답 내용 유형을 설정합니다 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try{ // 기본적인 MimeMessage 객체를 생성합니다 MimeMessage message = new MimeMessage(session); // 헤더의 From: 헤더 필드를 설정합니다. message.setFrom(new InternetAddress(from)); // 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 = "이메일 전송"; String res = "성공적으로 이메일을 전송했습니다..."; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor="#f0f0f0">\n" + "<h1 align="center">" + title + "</h1>\n" + "<p align="center">" + res + "</p>\n" + "</body></html>"); } mex.printStackTrace(); } } }
위의 Servlet을 컴파일하고 실행하여 주어진 이메일 ID에 파일 첨부된 메시지를 보냅니다.
이메일 서버에 사용자 ID와 비밀번호를 인증하기 위해 제공하려면 다음과 같은 속성을 설정할 수 있습니다:
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");
이메일 전송 메커니즘의 나머지 부분은 위에서 설명한 것과 일치합니다.