서블릿이 이메일을 보냅니다.
Servlet을 사용하여 이메일을 보내는 것은 매우 간단하지만 먼저 컴퓨터에 JavaMail API 및 Java Activation Framework) JAF)<를 설치해야 합니다🎜>.
- Java Standards 웹사이트에서 최신 버전의 JavaMail(버전 1.2)을 다운로드할 수 있습니다.
- JAF 표준 웹사이트에서 최신 버전의 JAF(버전 1.1.1)를 다운로드할 수 있습니다.
mail.jar 및 activation.jar 파일을 추가해야 합니다.
localhost가 인터넷에 연결되어 있고 이메일 전송을 지원한다고 가정합니다. 또한 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 = "abcd@gmail.com"; // 发件人的电子邮件 ID String from = "web@gmail.com"; // 假设您是从本地主机发送电子邮件 String host = "localhost"; // 获取系统的属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的 Session 对象 Session session = Session.getDefaultInstance(properties); // 设置响应内容类型 response.setContentType("text/html"); PrintWriter out = response.getWriter(); try{ // 创建一个默认的 MimeMessage 对象 MimeMessage message = new MimeMessage(session); // 设置 From: header field of the header. message.setFrom(new InternetAddress(from)); // 设置 To: header field of the header. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 设置 Subject: header field message.setSubject("This is the Subject Line!"); // 现在设置实际消息 message.setText("This is actual message"); // 发送消息 Transport.send(message); String title = "发送电子邮件"; String res = "成功发送消息..."; String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\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>"); }catch (MessagingException mex) { mex.printStackTrace(); } } }이제 위의 서블릿을 컴파일하고 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 Servlets를 방문하여 이를 호출합니다. . 그러면 지정된 이메일 ID
abcd@gmail.com으로 이메일이 전송되고 아래와 같은 응답이 표시됩니다.
이메일 보내기 h1>메시지가 성공적으로 전송되었습니다... |
여러 수신자에게 이메일을 보내려면 다음 방법을 사용하여 여러 이메일 ID를 지정하세요.
void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException
다음은 매개변수에 대한 설명입니다.
유형: TO, CC, BCC로 설정됩니다. 여기서 CC는 Carbon Copy, BCC는 Blind Carbon Copy를 의미합니다. 예를 들어 Message.RecipientType.TO입니다.
주소: 이메일 ID의 배열입니다. 이메일 ID를 지정할 때 InternetAddress() 메서드를 사용해야 합니다.
HTML 이메일 보내기
아래 예는 컴퓨터에서 HTML 형식의 이메일을 보냅니다. 이는 localhost가 인터넷에 연결되어 있고 이메일 전송을 지원한다고 가정합니다. 또한 Java Email API 패키지 및 JAF 패키지의 모든 jar 파일을 CLASSPATH에서 사용할 수 있는지 확인하십시오.
이 예는 이전 예와 매우 유사하지만 여기서는 setContent() 메서드를 사용하여 두 번째 매개변수의 내용을 HTML 내용을 지정하는 데 사용되는 "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 = "abcd@gmail.com"; // 发件人的电子邮件 ID String from = "web@gmail.com"; // 假设您是从本地主机发送电子邮件 String host = "localhost"; // 获取系统的属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的 Session 对象 Session session = Session.getDefaultInstance(properties); // 设置响应内容类型 response.setContentType("text/html"); PrintWriter out = response.getWriter(); try{ // 创建一个默认的 MimeMessage 对象 MimeMessage message = new MimeMessage(session); // 设置 From: header field of the header. message.setFrom(new InternetAddress(from)); // 设置 To: header field of the header. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 设置 Subject: header field 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 public \"-//w3c//dtd html 4.0 " + "transitional//en\">\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>"); }catch (MessagingException mex) { mex.printStackTrace(); } } }
위 서블릿을 컴파일하고 실행하여 주어진 이메일 ID로 HTML 메시지를 보냅니다.
이메일로 첨부 파일 보내기
아래 예에서는 컴퓨터에서 첨부 파일이 포함된 이메일을 보냅니다. 이는 localhost가 인터넷에 연결되어 있고 이메일 전송을 지원한다고 가정합니다. 또한 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 = "abcd@gmail.com"; // 发件人的电子邮件 ID String from = "web@gmail.com"; // 假设您是从本地主机发送电子邮件 String host = "localhost"; // 获取系统的属性 Properties properties = System.getProperties(); // 设置邮件服务器 properties.setProperty("mail.smtp.host", host); // 获取默认的 Session 对象 Session session = Session.getDefaultInstance(properties); // 设置响应内容类型 response.setContentType("text/html"); PrintWriter out = response.getWriter(); try{ // 创建一个默认的 MimeMessage 对象 MimeMessage message = new MimeMessage(session); // 设置 From: header field of the header. message.setFrom(new InternetAddress(from)); // 设置 To: header field of the header. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 设置 Subject: header field 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 public \"-//w3c//dtd html 4.0 " + "transitional//en\">\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>"); }catch (MessagingException mex) { mex.printStackTrace(); } } }
위 서블릿을 컴파일하고 실행하면 주어진 이메일 ID로 파일이 첨부된 메시지를 보낼 수 있습니다.
사용자 인증 섹션
인증을 위해 이메일 서버에 사용자 ID와 비밀번호를 제공해야 하는 경우 다음 속성을 설정할 수 있습니다.
props.setProperty("mail.user", "myuser"); props.setProperty("mail.password", "mypwd");
이메일 전송 메커니즘 나머지는 위에서 설명한 것과 동일합니다.