WEB开发网
开发学院WEB开发Jsp 用JavaMail API编写可带附件的邮件发送程序 阅读

用JavaMail API编写可带附件的邮件发送程序

 2008-01-05 09:40:24 来源:WEB开发网   
核心提示:利用Sun公司提供的javaMail API可以很方便的开发邮件发送程序,也许你已经可以利用它来发送一段简单的文本了,用JavaMail API编写可带附件的邮件发送程序,但想不想使你的程序像Outlook一样也能发送附件呢?本文在简单介绍了JavaMail之后,具体讲解了一段完整的送信的JavaBean及一个十分轻便

  利用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);

Tags:JavaMail API 编写

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接