随着互联网的发展和计算机应用的普及,电子邮件越来越成为一种重要的通信方式。目前,有多种开发工具可以编制邮件发送程序,其中以利用javamail api编程最为简单。本文通过一个完整的例子介绍如何通过javamail api编制邮件发送程序。
没有装载javamail api的读者,可以到www.javasoft.com站点下载javamail api 1.2或javamail api 1.3, 并按照readme.txt设置好classpath。例子代码如下:
import java.util.* ;
import java.io.* ;
import javax.mail.* ;
import javax.mail.internet.* ;
import javax.activation.* ;
public class jsendmail {
//定义收件人、发送人、主题等
string to=“”,from=“”,host=“”,filename=“”,messagetext=“”,subject=“”;
boolean debug=false;
//保存发送的文件名
vector vfile = new vector(10,10);
//保存发送的正文
vector vmsg = new vector(10,10);
public jsendmail() {}
public jsendmail(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)
{
vfile.addelement(fname);
}
//收集邮件正文
public void setmessage(string msg)
{
vmsg.addelement(msg);
}
//设置调试标志
public void setdebug(boolean debug)
{
this.debug=debug;
}
//邮件发送函数
public boolean startsend()
{
properties props = system.getproperties();
props.put(“mail.smtp.host”, host);
session session=session.getdefaultinstance
(props, null);
session.setdebug(debug);
try {
//创建一个消息,并初始化该消息的各项元素
mimemessage msg = new mimemessage(session);
msg.setfrom(new internetaddress(from));
internetaddress[] address={new internet??
address(to)};
msg.setrecipients(message.recipienttype.to,address);
msg.setsubject(subject);
//把message part加入新创建的multipart
multipart mp = new mimemultipart();
// 邮件内容的第一部分
enumeration emsg=vmsg.elements();
while(emsg.hasmoreelements())
{
messagetext=emsg.nextelement().tostring();
mimebodypart mbp1=new mimebodypart();
mbp1.settext(messagetext);
mp.addbodypart(mbp1);
}
vmsg.removeallelements();
// 邮件内容的第二部分
enumeration efile=vfile.elements();
while(efile.hasmoreelements())
{
mimebodypart mbp2=new mimebodypart();
filename=efile .nextelement().tostring();
filedatasource fds=new filedatasource(filename);
mbp2.setdatahandler(new datahandler(fds));
mbp2.setfilename(fds.getname());
mp.addbodypart(mbp2);
}
vfile.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;
}//end public void startsend()
public static void main(string[] args)
{
jsendmail sendmail=new jsendmail(“dzx@mail.zj.hn.cn”,“chinazjj@21cn.com”,“smtp.21cn.com”,“test javamail api”);
sendmail.attachfile(“jsendmail.java");
sendmail.attachfile(“jsendmail.class");
sendmail.setmessage(“send a file");
sendmail.setmessage(“send a javafile");
sendmail.startsend();
}
}