快速业务通道

用JavaMail API编写可带附件的邮件发送程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

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

时间:2010-07-19

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

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

时间:2010-07-19

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

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.printSt

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号