| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> JAVA文章 >> JavaAPI >> 文章正文
用JavaMail API编写可带附件的邮件发送程序        【字体:
用JavaMail API编写可带附件的邮件发送程序
作者:佚名    文章来源:不详    点击数:    更新时间:2006-4-16

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

[1] [2] [3] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 利用JAVA API函数实现数据的…

  • API文件产生器-javadoc.exe

  • Java Servlet基本方法介绍 J…

  • JDBC2.0扩展API(1)

  • JDBC2.0扩展API(2)

  • JDBC2.0扩展API(3)

  • JDBC2.0扩展API(4)

  • Java Servlet API说明文档(…

  • Java Servlet API说明文档(…

  • Java Servlet API说明文档(…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |