如何在JSP中使用JavaMail |
你 盼望在jsp中 构建一个邮件发送收取工具吗?下面将介绍的便是在jsp中 构建一个邮件发送收取工具 。在这篇文章中你 可以了解到JavaMail API的一些要点以及如何在JSP中 使用它 。本文中还包括了在JSP中 使用JavaMail的实例 。JavaMail是JSP 利用软件中相当 壮大的API 。 浏览这篇文章需求对JSP、JavaBeans和JavaMail有 定然的初步了解 。固然,有关于JavaMail的 常识你 可以通过浏览这篇文章来 获得 。假如你关于以上三项一窍不通,但你所 使用的服务器 支撑JSP和JavaMail的话,你 可以仅仅通过复制/粘贴来 使用它们 。 什么是JavaMail JavaMail是Sun公布的用来 解决email的API 。它 可以容易地执行一些常用的邮件传输 。 固然JavaMail是Sun的API之一,但它当前还没有被加在 标准的java开发工具包中(Java Development Kit),这就 象征着你在 使用前必须另外下载JavaMail文件 。除此以外,你还需求有Sun的JavaBeans Activation Framework (JAF) 。JavaBeans Activation Framework的运行很复杂,在这里 容易的说便是JavaMail的运行必须得依赖于它的 支撑 。在windows 2000下 使用需求指定这些文件的路径,在其它的操作系统上也 类似 。 接下来要 讲解的是这篇指南的最难 了解的 部分 。 这篇指南包括三 部分:HTML表格、关于JavaMail、JavaMail和JSP的 联合 。 第一 部分:HTML表格 第一 部分提供了一个最 根本的基于HTML的email发送收取程序的例子 。第二 部分则讲述JavaMail的工作原理 。第三 部分则介绍将JavaMail加入JSP, 缔造一个 根本的email发送收取程序 。 划分组件 JSP最主要的 特点是能将整个网页划分成一些细小的组件 。这里 使用的组件包括: ●一个用来将email的信息发送给JSP的HTML表格; ●一个JSP页面用来 解决和发送 函件 。 第一步,便是 缔造一个HTML表格用来给JSP页面发送信息 。你 可以将以下的HTML代码复制到你的电脑上: 用来发送email的HTML源代码 <HTML> <BODY> <FORM action="sendmail.jsp" method="post"> <TABLE align="center"> <TR> <TD width="50%"> To:<BR><INPUT name="to" size="25"> </TD> <TD width="50%"> From:<BR><INPUT name="from" size="25"> </TD> </TR> <TR> <TD colspan="2"> Subject:<BR><INPUT name="subject" size="50"> </TD> </TR> <TR> <TD colspan="2"> Message:<BR><TEXTAREA name="text" rows=25 cols=85></TEXTAREA> </TD> </TR> </TABLE> <INPUT type="submit" name="cb_submit" value=" Send "> <INPUT type="reset" name="cb_reset" value=" Clear "> </FORM> </BODY> </HTML>以上这段程序将 缔造一个包括email 根本信息(例如:收件地址、发送地址、主题和内容)的文件 。固然你 可以依据你自己的需求来决定这个文件包括那些信息 。 这个HTML文件的 使用有两点要求:第丝毫是生成的文件必须发送给接下来将介绍的程序 使用 。在这个例子中便是sendmail.jsp,但在你 使用时,必须用这个文件在系统里的URL来 接替它;第二点是必须有空间来同意消费者发送email 。 第二 部分:关于JavaMail 文档的 使用 下载的JavaMail API中带的文档是很有用的 。你 可以在JavaMail下的/docs/javadocs/index.html找到它 。第二 部分主要将 综合邮件程序的组件 。你 可以通过浏览文档来 获得更多这方面的信息 。 组件发送邮件需求 使用JavaMail,它使对邮件的操作变得 容易易用 。 属性对象 JavaMail需求 缔造一个 格局为"mail.smtp.host"的文件用来发送信息 。 Properties props = new Properties (); props.put("mail.smtp.host", "smtp.jspinsider.com"); 对话对象 所有的基于JavaMail的程序都至少需求一个或所有的对话 指标 。 Session sendMailSession; sendMailSession = Session.getInstance(props, null); 传输 邮件的传输惟独送出或受到两种状态 。JavaMail将这两种不同状态 形容为传输和 储存 。传输将送出邮件,而 储存将收取邮件 。 Transport transport; transport = sendMailSession.getTransport("smtp"); 使用JavaMail能为我们节约大量的 工夫 。JavaMail能 接替所有的SMTP的工作 。 留神:JavaMail并不能 彻底的 支撑所有的邮件发送收取工作 。它当前仅 支撑IMAP、SMTP和POP3,除此以外你惟独期待新的JavaMail版本或自己开发 协定 。 信息对象 信息对象将把你所发送的邮件 实在的反映出来 。 Message newMessage = new MimeMessage(sendMailSession); 这便是我们所需求的所有四个对象 。下一步将是如何将对象加入到JSP中 。 第三 部分:JavaMail和JSP的 联合 缔造JSP 下面我们将开始将他们 联合在一同 。最主要的丝毫是要确认依据页面 批示分类 。还要记得在邮件上标注java.util.date 。 <%@ page import= " javax.mail.*, javax.mail.internet.*, javax.activation.*, java.util.*" %>其次, 缔造邮件发送确实认信息 。确认信息 可以是任意的,普通常用"你的邮件已经发送出去了(Your mail has been sent) 。" 信息是如何 缔造和发送的 我们在第二 部分里已经 探讨过信息对象的 缔造 。我们下面将对信息进行操作 。这就和设 相信息对象的属性一样 容易 。你 可以通过下面的程序来实现这项操作 。 newMessage.setFrom(new InternetAddress(request.getParameter("from"))); newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(request.getParameter("to"))); newMessage.setSubject(request.getParameter("subject")); newMessage.setSentDate(new Date()); newMessage.setText(request.getParameter("text"));现在将开始发送信息 。通过JavaMail来实现它十分 容易 。 transport.send(newMessage); 将所有的组件 联合在一同 现在所有的组件都已经齐全了 。现在将它们都放在JSP里面 。要 留神每一个 舛误信息,并将它反馈给消费者 。代码如下,你 可以通过复制它们直接 使用: Sample JSP email Utility Using JavaMail <%@ page import=" javax.mail.*, javax.mail.internet.*, javax.activation.*,java.util.*" %> <html> <head> <TITLE>JSP meets JavaMail, what a sweet combo.</TITLE> </HEAD> <BODY> <% try{ Properties props = new Properties(); Session sendMailSession; Store store; Transport transport; sendMailSession = Session.getInstance(props, null); props.put("mail.smtp.host", "smtp.jspinsider.com"); Message newMessage = new MimeMessage(sendMailSession); newMessage.setFrom(new InternetAddress(request.getParameter("from"))); newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(request.getParameter("to"))); newMessage.setSubject(request.getParameter("subject")); newMessage.setSentDate(new Date()); newMessage.setText(request.getParameter("text")); transport = sendMailSession.getTransport("smtp"); transport.send(newMessage); %> <P>Your mail has been sent.</P> <% } catch(MessagingException m) { out.println(m.toString()); } %> </BODY> </HTML> |