在实现javamail之前首先要搭建邮件服务器。
James
在进行WEB程序开发的时候需要使用Tomcat服务器,但是Tomcat服务器并不支持邮件的处理操作,所以要想进行邮件的发送,还需要配置一个单独的Java Mail服务器,James 就是一个企业级的邮件服务器,它完全实现了SMTP(Simple Mail Transfer Protocol,简单邮件传输协议) 和POP3(Post Office Protocol 3,邮局协议的第三个版本)以及NNTP (Network News Transport Protocol,网络新闻传输协议)协议。同时,James服务器又是一个邮件应用程序平台。它可以让用户常容易的实现出很强大的邮件应用程序。读者可以使用Apache的James服务器,直接登陆http://james.apache.org/ ,下载James服务器。
在网上可以直接搜索配置James服务器,有大量的博文可以参考,我在这里就不累赘重复了,有一点值得注意的是:
在配置过程中有打 telnet localhost 4555
没有反应的需要在控制面板-->程序与功能-->打开或关闭windows功能中 打开Telnet服务即可
JavaMail简介及配置
JavaMail是Java中专门用来处理电子邮件处理的一套规范,使用它可以方便的进行mail的发送、也可以使用JavaMail开发出类似于Microsoft Outlook样的应用程序。
JavaMail核心类: 1.javax.mail.Session:表示整个邮件的会话,所有的类都要通过session才可以使用; 2.javax.mail.Message:Message类表示的是邮件传递的内容; 3.javax.mail.Address:当确定好Session和Message之后,就可以通过Address进行发送地址的指定; 4.javax.mail. Authenticator:使用此类可以通过用户名和密码保护资源; 5.javax.mail.Transport:在消息发送的最后一步使用此类,此类的功能是使用指定的语言发送消息; 6.javax.mail.Store:此类主要是进行信息的读、写等操作,也可以通过此类读取文件夹中的邮件; 7.javax.mail.Folder:用于对邮件进行分级管理。
实例:发送普通邮件
发送邮件依靠之前配置过的James服务器和JavaMail(JAF)类完成,但是在进行邮件发送时,一定要注意的是,由于现在所有的邮箱用户都保存在了James服务器上,所以一定要首先编写一个可以用于服务器验证用户名和密码的操作类,此类必须继承javax.mail.Authenticator类,而且必须覆写getPasswordAuthentication()方法。
<%@ page contentType="text/html; charset=GBK" language="java" %>
发送普通文本格式的E-mail <script language="java script"> function checkform(myform){ ? ? for(i=0;i ? ? ? ? if(myform.elements[i].value==""){ ? ? ? ? ? ? alert(myform.elements[i].title+"不能为空!"); ? ? ? ? ? ? myform.elements[i].focus(); ? ? ? ? ? ? return false; ? ? ? ? } ? ? } }?
mydeal.jsp
?
<%@ page contentType="text/html; charset=GBK" language="java"? errorPage="" %> <%@ page import="java.util.*" %> <%@ page import ="javax.mail.*" %> <%@ page import="javax.mail.internet.*" %> <%@ page import="javax.activation.*" %> <%@ page import="org.apache.commons.mail.*" %> <% try{ ? ? request.setCharacterEncoding("GBK"); ? ? String from=request.getParameter("from"); ? ? String to=request.getParameter("to"); ? ? String subject=request.getParameter("subject"); ? ? String messageText=request.getParameter("content"); ? ? String password=request.getParameter("password"); ? ? String mailserver="localhost";? ? //局域网发送邮件时的SMTP服务器? ? ? ? SimpleEmail email = new SimpleEmail(); ? ? email.setHostName(mailserver);//设置邮件服务器 ? ? email.setAuthentication(from,password);//设置邮箱用户名和密码 ? ? email.setFrom(from);? ? ? ? //设置发件人地址? ? ? email.addTo(to);? ? ? ? ? ? //设置收件人地址 ? ? email.setSubject(subject);? ? //设置主题 ? ? email.setSentDate(new Date());//设置发送时间 ? ? email.setMsg(messageText);? ? //设置发送的消息 ? ? email.send();? ? ? ? ? ? ? ? //发送邮件 ? ? ? out.println("<script language='java script'>alert('邮件已发送!');window.location.href='index.jsp';"); }catch(Exception e){ ? ? e.printStackTrace(); ? ? System.out.println("发送邮件产生的错误:"+e.getMessage()); ? ? out.println("<script language='java script'>alert('邮件发送失败!');window.location.href='index.jsp';"); } %>
需要导的包:mail.jar