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("xxf@cafe.com"); 


(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") 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值