javamail使用完全手册

1,哪里是开始:
初始环境,安装好你的j2sdk和你的web服务器,也就是说你的机器应该能够运行jsp。
不能??
这里不管
2,安装javamail和jaf
JavaMail是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。 支持pop3,imap,smtp.
虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),
这就意味着你在使用前必须另外下载JavaMail文件。除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。
JavaBeans Activation Framework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持
去java.sun.com下再两个zip包(javamail和jaf的)
3,配置
两个zip解压到c:(这里是举例,你的可能不同)
把javamai的mail.jar和jaf的activation.jar加入到环境变变量中
4,用来发送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">
        <P>Message:<BR><TEXTAREA name="text" rows=25 cols=85></TEXTAREA></P>
       </TD>
      </TR>
     </TABLE>
     <INPUT type="submit" name="cb_submit" value=" Send ">
     <INPUT type="reset" name="cb_reset" value=" Clear ">
    </FORM>
    </BODY>
    </HTML>
5,今天你“发“了没有
<%@ 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");
      //用你的smtp服务器代替上面的 < 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>
解释解释:
属性对象

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中。
3.JavaMail的常用类介绍

事先说明:

没用过JavaMail的人可能看不懂这些介绍,不过不要紧,后面的文章有具体的实例,到时也可倒回来查看这些类的用法.


(1) javax.mail.Properties类
  JavaMail需要Properties来创建一个session对象。它将寻找字符串"mail.smtp.host",属性值就是发送邮件的主机.

用法:
 Properties props = new Properties ();
   props.put("mail.smtp.host", "smtp.163.com");//可以换上你的smtp主机名。


(2) javax.mail.Session类
  这个Session类代表JavaMail 中的一个邮件session. 每一个基于 JavaMail的应用程序至少有一个session但是可以有任意多的session。 在这个例子中, Session对象需要知道用来处理邮件的SMTP 服务器。

用法:
   Session sendMailSession;
   sendMailSession = Session.getInstance(props, null);


(3) javax.mail.Transport类
  邮件是既可以被发送也可以被受到。JavaMail使用了两个不同的类来完成这两个功能:Transport 和Store. Transport 是用来发送信息的,而Store用来收信。对于这的教程我们只需要用到Transport对象。

用法:
Transport transport;
  transport = sendMailSession.getTransport("smtp");

  用JavaMail Session对象的getTransport 方法来初始化Transport。传过去的字符串申明了对象所要使用的协议,如"smtp"。这将为我们省了很多时间。因为JavaMail以境内置了很多协议的实现方法。

 注意: JavaMail并不是绝对支持每一个协议,目前支持IMAP、 SMTP和 POP3.


(4) javax.mail.MimeMessage类
  Message对象将存储我们实际发送的电子邮件信息,Message对象被作为一个MimeMessage对象来创建并且需要知道应当选择哪一个JavaMail session。

  用法:
Message newMessage = new MimeMessage(sendMailSession);


(5) javax.mail.InternetAddress类
一旦您创建了 Session 和 Message,并将内容填入消息后,就可以用Address确定信件地址了。和 Message 一样,Address 也是个抽象类。您用的是Javax.mail.internet.InternetAddress 类.

用法:
InternetAddress from=new InternetAddress("[email protected]");


(6) javax.mail.Store类
Store类实现特定邮件协议上的读、写、监视、查找等操作。通过Javax.mail.Store类可以访问Javax.mail.Folder类。

用法:
Store store=s.getSorte("pop3");//s为一个邮件会话
store.connect(popserver,username,password);//通过你提供的pop地址,用户名和密码登录你的邮箱


(7) javax.mail.Folder类
Folder类用于分级组织邮件,并提供照Javax.mail.Message格式访问email的能力。

用法:
Folder folder=store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);


(8) javax.mail.Internet.MimeMultpart
一般保存电子邮件内容的容器是Multipart抽象类,它定义了增加和删除及获得电子邮件不同部分内容的方法.由于Multipart是抽象类,我们必须为它使用一个具体的子类,JavaMail API提供javax.mail.Internet.MimeMultpart类来使用 MimeMessage对象.

用法:
MimeMultipart multipart=new MimeMultipart();

注:我们使用MimeMultipart对象的一个方法是addBodyPart(),它在我们的电子邮件内容里添加BodyPart(BodyPart类在下面紧接着要介绍)对象.消息可以有很多部分,一个BodyPart可以代表一个部分.


(9) javax.mail.Internet.MimeBodyPart类

MimeBodyPart是BodyPart具体用于mimeMessage的一个子类.
MimeBodyPart对象代表一个MimeMessage对象内容的一部分.每个MimeBodyPart被认为有两部分:
⊙一个MIME类型
⊙匹配这个类型的内容

用法:
MimeBodyPart mdp=new MimeBodyPart();
String text="Hello JavaMail!";
mdp.setContent(text,"text/plain");//定义MIME类型为text/plain,并设置MimeBodyPart的内容.


(10) javax.activation.DataHandler类(包含在JAF中)
JavaMail API 不限制信息只为文本,任何形式的信息都可能作茧自缚MimeMessage的一部分.除了文本信息,作为文件附件包含在电子邮件信息的一部分是很普遍的. JavaMail API通过使用DataHandler对象,提供一个允许我们包含非文本BodyPart对象的简便方法.

用法:
DataHandler dh=new DataHandler(text,type);
mdp.setDatahandler(dh);//mdp是一个MimeBodyPart对象


(11) javax.activation.FileDataSource类(包含在JAF中)
一个FileDataSource对象可以表示本地文件和服务器可以直接访问的资源.一个本地文件可以通过创建一个新的MimeBodyPart对象附在一个mimeMessage对象上.

用法:
MimeMultipart mm=new MimeMultipart();
MimeBodyPart mdp=new MimeBodyPart();
FileDataSource fds=new FileDataSource("c:/exam.txt");
mdp.setDataHandler(new DataHandler(fds)); //设置数据源
mm.addBodyPart(mdp); //为当前消息MimeMultipart对象增加MimeBodyPart


(12) javax.activation.URLDataSource类(包含在JAF中)
远程资源,URL不会指向它们,由一个URLDataSource对象表示.一个远程资源可以通过创建一个新mimeBodyPart对象附在一个mimeMessage对象上(同FileDataSource差不多).

用法:
与FileDataSource唯一不同的是数据源的设置:
URLDataSource uds=new URLDataSource("http://www.cnjsp.com/logo.gif")

你可能感兴趣的:(jsp,应用服务器,工作,sun)