如何在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>