JavaMail是为了开发者处理邮件相关的编程接口。用来处理email的API。此API可以很方便的执行常用的邮件传输任务。Javamail不是标准的Java API ,所以需要去单独下载,JavaMail的包名为mail.jar。如果使用JavaMail还需要JAF的支持,JDK1.6已经集成了JAF,所以不需要另行下载,之前的老版本JDK需要单独下载JAF。 以下是我写的一个简单的邮件发送程序案例,注释很详细。值得注意的是一定要把mail.jar加入lib中。 import java.util.Properties; import javax.mail.Address; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class Demo1 { public static void main(String[] args) throws Exception { //新建配置文件 Properties props = new Properties(); //配置文件mail.smtp.auth为需要验证 props.setProperty("mail.smtp.auth", "true"); //配置文件mail.transport.protocol设置为smtp方式 props.setProperty("mail.transport.protocol", "smtp"); //新建session,加入配置 Session session = Session.getInstance(props); //打印连接信息 session.setDebug(true); //新建Message对象,传入session参数 Message msg = new MimeMessage(session); //设置Message内容 msg.setSubject("JavaMail"); msg.setText("你好吗?"); msg.setFrom(new InternetAddress("此处为你要发送的邮箱地址")); //设置发送信息 Transport transport = session.getTransport(); //连接smtp服务器 transport.connect("smtp.qq.com", 25, "账号", "密码"); //通过服务器发送Message对象,第二个参数为发送地址的数组,可以群发。 transport.sendMessage(msg, new Address[] { new InternetAddress( "发送的地址1"),new InternetAddress( "发送的地址2") }); //释放资源 transport.close(); } } 是否觉得JavaMail API很方便? 下面一个案例是使用Servlet实现JavaMail的发送功能,并且用到了JNDI。 第一步:需要在tomcat目录的lib下加入mail.jar(有人要问为什么了,其实很简单,因为使用JNDI的话,Session对象是需要tomcat创建的,所以如果不在tomcat\lib下加入mail.jar,就会找不到该类。并且在webapp中不能在加入mail.jar文件了,不然会报错,出现类转换异常。那为什么又会出现此异常呢?因为当程序创建Session对象的时候,webapp类加载器会加载webapp下的mail.jar文件,而tomcat此时的类加载器会加载tomcat\lib下的mail.jar,内存中有两份Session字节码,这样会出现转换异常。) 第二步:配置 META-INF/context.xml内容如下 <Context><Resource name="mail/Session" auth="Container" type="javax.mail.Session" mail.smtp.host="smtp.qq.com" mail.smtp.auth="true" mail.transport.protocol="smtp" /> </Context> 第三步:编写Servlet package com.openwudi.mail.servlet; 邮件开发不知道现在是否用的还比较多,在web应用中可以成为一个附加模块,比如从数据库中导入邮箱地址,然后群发邮件,比手工发的效率会高很多。 |
|
来自: openwudi > 《Java Web》