用JavaMailAPI编写可带附件的邮件发送程序
利用Sun公司提供的JavaMail API可以很方便的开发邮件发送程序。也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?在简单介绍了JavaMail之后,详细讲解了一段完整的送信的JavaBean及一个十分轻巧的servlet。
(没有装载JavaMail API的读者,可以到此站点下载,并按照Readme.txt设置好ClassPath)
· 一、JavaMail中一些我们需要的类
1.Properties
JavaMail需要Properties来创建一个session对象,其属性值就是发送邮件的主机,如:
Properties props = new Properties ();
2.Session
所有的基于JavaMail的程序都至少需要一个或全部的对话目标。
Session session = Session.getInstance(props, null);
对象将把你所发送的邮件真实的反映出来。
MimeMessage msg = new MimeMessage(session);
邮件的发送是由Transport来完成的:
Transport.send(msg);
import java.util.* ;
import javax.mail.* ;
import javax.activation.* ;
//定义发件人、收件人、主题等
String from="";
String filename="";
//用于保存发送附件的文件名的集合
//做一个可以传发件人等参数的构造
//初始化发件人、收件人、主题等
this.from=from;
this.subject=subject;
//该方法用于收集附件名
file.addElement(fname);
//开始发送信件的方法
//创建Properties对象
//创建信件服务器
//得到默认的对话对象
//创建一个消息,并初始化该消息的各项元素
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO,address);
//后面的BodyPart将加入到此处创建的Multipart中
//利用枚举器方便的遍历集合
//检查序列中是否还有更多的对象
MimeBodyPart mbp=new MimeBodyPart();
filename=efile .nextElement().toString();
FileDataSource fds=new FileDataSource(filename);
mbp.setDataHandler(new DataHandler(fds));
mbp.setFileName(fds.getName());
}
file.removeAllElements();
msg.setContent(mp);
msg.setSentDate(new Date());
Transport.send(msg);
mex.printStackTrace();
if ((ex=mex.getNextException())!=null){
}
}
}
· 三、一个简单的servlet
import javax.servlet.*;
import java.io.*;
HttpServlet implements SingleThreadModel{
throws ServletException {
}
Req, HttpServletResponse Res)
try{
Mail sendmail=newMail("zhang@263.net",
sendmail.attachfile("table.pdf");
}catch(Exception e){
}
public void destroy() {
}
至此,你已经可以在邮件中添加附件了,而且可以是多个。像这样,将响应与逻辑相分离对代码的扩展和维护是相当有好处的。若Beans与servlet不在同一个包下,别忘了"import"。
编辑推荐:
温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>