你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / Java专栏
用JavaMail API编写可带附件的邮件发送程序(1)
 

利用Sun公司提供的JavaMail API可以很方便的开发邮件发送程序。也许你已经可以利用它来发送一段简单的文本了,但想不想使你的程序像OUTLOOK一样也能发送附件呢?本文在简单介绍了JavaMail之后,详细讲解了一段完整的送信的JavaBean及一个十分轻巧的servlet。
<BR><BR>(没有装载JavaMail API的读者,可以到<a href="www.javasoft.com" target=_blank>此站点</a>下载,并按照Readme.txt设置好ClassPath)
<BR>
<strong>一、JavaMail中一些我们需要的类</strong>
<BR>
1.Properties
<BR><BR>JavaMail需要Properties来创建一个session对象,其属性值就是发送邮件的主机,如:
<BR><BR><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">Properties props = new Properties ();<br>props.put("mail.smtp.host", "smtp.xxxx.com");//可以换上你的smtp主机名,就像你在OutLook中设置smtp主机名一样。</td></tr></table>
<BR>
2.Session
<BR><BR>所有的基于JavaMail的程序都至少需要一个或全部的对话目标。
<BR><BR><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">Session session = Session.getInstance(props, null);</td></tr></table>
<BR>
3.MimeMessage
<BR><BR>信息对象将把你所发送的邮件真实的反映出来。
<BR><BR><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">MimeMessage msg = new MimeMessage(session);</td></tr></table>
<BR>
4.Transport
<BR><BR>邮件的发送是由Transport来完成的:
<BR><BR><table width="580" border="1" cellspacing="0" cellpadding="0" bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor="e6e6e6" class="code">Transport.send(msg);</td></tr></table>
<BR>
<strong>二、我们自己创建的可发送附件的类</strong>
<BR>
<table width=580 border=1 cellspacing=0 cellpadding=0 bordercolorlight = "black" bordercolordark = "#FFFFFF"><tr><td bgcolor=e6e6e6 class=code>import java.util.* ;<br>import java.io.* ;<br>import javax.mail.* ;<br>import javax.mail.internet.* ;<br>import javax.activation.* ;<br>public class Mail {<br>//定义发件人、收件人、主题等<br>String to="";<br>String from="";<br>String host="";<br>String filename="";<br>String subject="";<br>//用于保存发送附件的文件名的集合<br>Vector file = new Vector();<br>//做一个可以传发件人等参数的构造<br>public Mail (String to,String from,String smtpServer,String subject){<br>//初始化发件人、收件人、主题等<br>this.to=to;<br>this.from=from;<br>this.host=smtpServer;<br>this.subject=subject;<br>}<br>//该方法用于收集附件名<br>public void attachfile(String fname){<br>file.addElement(fname);<br>}<br>//开始发送信件的方法<br>public boolean startSend(){<br>//创建Properties对象<br>Properties props = System.getProperties();<br>//创建信件服务器<br>props.put("mail.smtp.host", host);<br>//得到默认的对话对象<br>Session session=Session.getDefaultInstance(props, null); try {<br>//创建一个消息,并初始化该消息的各项元素<br>MimeMessage msg = new MimeMessage(session);<br>msg.setFrom(new InternetAddress(from));<br>InternetAddress[] address={new InternetAddress(to)};<br>msg.setRecipients(Message.RecipientType.TO,address);<br>msg.setSubject(subject);<br>//后面的BodyPart将加入到此处创建的Multipart中<br>Multipart mp = new MimeMultipart();<br>//利用枚举器方便的遍历集合<br>Enumeration efile=file.elements();<br>//检查序列中是否还有更多的对象<br>while(efile.hasMoreElements()){<br>MimeBodyPart mbp=new MimeBodyPart();<br>//选择出每一个附件名<br>filename=efile .nextElement().toString();<br>//得到数据源<br>FileDataSource fds=new FileDataSource(filename);<br>//得到附件本身并至入BodyPart<br>mbp.setDataHandler(new DataHandler(fds));<br>//得到文件名同样至入BodyPart<br>mbp.setFileName(fds.getName());<br>mp.addBodyPart(mbp);<br>}<br>//移走集合中的所有元素<br>file.removeAllElements();<br>//Multipart加入到信件<br>msg.setContent(mp);<br>//设置信件头的发送日期<br>msg.setSentDate(new Date());<br>//发送信件<br>Transport.send(msg);<br>} catch (MessagingException mex) {<br>mex.printStackTrace();<br>Exception ex = null;<br>if ((ex=mex.getNextException())!=null){<br>ex.printStackTrace();<br>}<br>return false;<br>}<br>return true;<br>}<br>}</td></tr></table>

(编辑:aniston)

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089