欢迎光临
我们一直在努力

用JavaMail API编写可带附件的邮件发送程序-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

利用sun公司提供的javamail api可以很方便的开发邮件发送程序。也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像outlook一样也能发送附件呢?本文在简单介绍了javamail之后,详细讲解了一段完整的送信的javabean及一个十分轻巧的servlet。

(没有装载javamail api的读者,可以到此站点下载,并按照readme.txt设置好classpath)

一、javamail中一些我们需要的类

1.properties

javamail需要properties来创建一个session对象,其属性值就是发送邮件的主机,如:

properties props = new properties ();

props.put("mail.smtp.host", "smtp.xxxx.com");//可以换上你的smtp主机名,就像你在outlook中设置smtp主机名一样。

2.session

所有的基于javamail的程序都至少需要一个或全部的对话目标。

session session = session.getinstance(props, null);

3.mimemessage

信息对象将把你所发送的邮件真实的反映出来。

mimemessage msg = new mimemessage(session);

4.transport

邮件的发送是由transport来完成的:

transport.send(msg);

二、我们自己创建的可发送附件的类

import java.util.* ;

import java.io.* ;

import javax.mail.* ;

import javax.mail.internet.* ;

import javax.activation.* ;

public class mail {

//定义发件人、收件人、主题等

string to="";

string from="";

string host="";

string filename="";

string subject="";

//用于保存发送附件的文件名的集合

vector file = new vector();

//做一个可以传发件人等参数的构造

public mail (string to,string from,string smtpserver,string subject){

//初始化发件人、收件人、主题等

this.to=to;

this.from=from;

this.host=smtpserver;

this.subject=subject;

}

//该方法用于收集附件名

public void attachfile(string fname){

file.addelement(fname);

}

//开始发送信件的方法

public boolean startsend(){

//创建properties对象

properties props = system.getproperties();

//创建信件服务器

props.put("mail.smtp.host", host);

//得到默认的对话对象

session session=session.getdefaultinstance(props, null); try {

//创建一个消息,并初始化该消息的各项元素

mimemessage msg = new mimemessage(session);

msg.setfrom(new internetaddress(from));

internetaddress[] address={new internetaddress(to)};

msg.setrecipients(message.recipienttype.to,address);

msg.setsubject(subject);

//后面的bodypart将加入到此处创建的multipart中

multipart mp = new mimemultipart();

//利用枚举器方便的遍历集合

enumeration efile=file.elements();

//检查序列中是否还有更多的对象

while(efile.hasmoreelements()){

mimebodypart mbp=new mimebodypart();

//选择出每一个附件名

filename=efile .nextelement().tostring();

//得到数据源

filedatasource fds=new filedatasource(filename);

//得到附件本身并至入bodypart

mbp.setdatahandler(new datahandler(fds));

//得到文件名同样至入bodypart

mbp.setfilename(fds.getname());

mp.addbodypart(mbp);

}

//移走集合中的所有元素

file.removeallelements();

//multipart加入到信件

msg.setcontent(mp);

//设置信件头的发送日期

msg.setsentdate(new date());

//发送信件

transport.send(msg);

} catch (messagingexception mex) {

mex.printstacktrace();

exception ex = null;

if ((ex=mex.getnextexception())!=null){

ex.printstacktrace();

}

return false;

}

return true;

}

}

三、一个简单的servlet

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

public class sendmail extends

httpservlet implements singlethreadmodel{

public void init(servletconfig conf)

throws servletexception {

super.init(conf);

}

public void dopost(httpservletrequest

req, httpservletresponse res)

throws servletexception, ioexception {

try{

//实例化刚才我们做的类,并按其构造传进相应的参数

mail sendmail=newmail("zhang@263.net",

"chtwoy@21cn.com","smtp.21cn.com","test");

sendmail.attachfile("table.pdf");

sendmail.startsend();

}catch(exception e){

e.printstacktrace();

}

}

public void destroy() {

}

}

四、小结

至此,你已经可以在邮件中添加附件了,而且可以是多个。像这样,将响应与逻辑相分离对代码的扩展和维护是相当有好处的。若beans与servlet不在同一个包下,别忘了“import”。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用JavaMail API编写可带附件的邮件发送程序-JSP教程,Java技巧及代码
分享到: 更多 (0)

相关推荐

  • 暂无文章