JSP与JavaMail (五)
来源:互联网 发布:苏州大数据培训课程 编辑:程序博客网 时间:2024/05/29 17:38
<script type="text/javascript">google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//</script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>6.发送三种类型的附件 前面我们已学会了发送一般文本邮件和超文本邮件,今天我们将让大家学会编写三种类型的附件的邮件 发送程序.(注:撰写界面仍然用前面的)<%@ page contentType="text/html;charset=GB2312" %><%request.setCharacterEncoding("gb2312");%><%@ page import="java.util.*,javax.mail.*"%><%@ page import="javax.mail.internet.*"%><%@ page import="javax.activation.*"%><!--要发送附件必须引入该库--><%@ page import="java.net.*"%><!--要用到URL类--><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>发送成功</title></head><body><%try{String tto=request.getParameter("to");String ttitle=request.getParameter("title");String tcontent=request.getParameter("content");Properties props=new Properties();props.put("mail.smtp.host","127.0.0.1");props.put("mail.smtp.auth","true");Session s=Session.getInstance(props);s.setDebug(true);MimeMessage message=new MimeMessage(s);//给消息对象设置发件人/收件人/主题/发信时间InternetAddress from=new InternetAddress("xxf@cafe.com");message.setFrom(from);InternetAddress to=new InternetAddress(tto);message.setRecipient(Message.RecipientType.TO,to);message.setSubject(ttitle);message.setSentDate(new Date());Multipart mm=new MimeMultipart();//新建一个MimeMultipart对象用来存放多个BodyPart对象//设置信件文本内容BodyPart mdp=new MimeBodyPart();//新建一个存放信件内容的BodyPart对象mdp.setContent(tcontent,"text/html;charset=gb2312");//给BodyPart对象设置内容和格式/编码方式mm.addBodyPart(mdp);//将含有信件内容的BodyPart加入到MimeMultipart对象中//设置信件的附件1(自定义附件:直接将所设文本内容加到自定义文件中作为附件发送)mdp=new MimeBodyPart();//新建一个存放附件的BodyPartDataHandler dh=new DataHandler("JavaMail附件测试","text/plain;charset=gb2312"); //新建一个DataHandler对象,并设置其内容和格式/编码方式mdp.setFileName("xxf.txt");//加上这句将作为附件发送,否则将作为信件的文本内容mdp.setDataHandler(dh);//给BodyPart对象设置内容为dhmm.addBodyPart(mdp);//将含有附件的BodyPart加入到MimeMultipart对象中//设置信件的附件2(用本地上的文件作为附件)mdp=new MimeBodyPart();FileDataSource fds=new FileDataSource("g:/xx.txt");dh=new DataHandler(fds);mdp.setFileName("dd.txt");//可以和原文件名不一致mdp.setDataHandler(dh);mm.addBodyPart(mdp);//设置信件的附件3(用远程文件作为附件)mdp=new MimeBodyPart();URLDataSource ur=new URLDataSource(new URL("http://localhost:8080/jspstudy/email/xx.gif")); //注:这里用的参数只能为URL对象,不能为URL字串,在前面类介绍时有误(请谅解),这里纠正一下.dh=new DataHandler(ur);mdp.setFileName("ss.txt");mdp.setDataHandler(dh);mm.addBodyPart(mdp);message.setContent(mm);//把mm作为消息对象的内容 message.saveChanges();Transport transport=s.getTransport("smtp");transport.connect("127.0.0.1","xxf","coffee");transport.sendMessage(message,message.getAllRecipients());transport.close();%><div align="center"> <p><font color="#FF6600">发送成功!</font></p> <p><a href="recmail.jsp">去看看我的信箱</a><br> <br> <a href="index.htm">再发一封</a> </p></div><%}catch(MessagingException e){out.println(e.toString());}%></body></html> 发送附件是不是很有趣呢?但是在这里由于没有修改撰写界面,要发送的附件只能在程序里固定,所以一点都不灵活.不用担心,下一次我们将重写撰写界面,当然同时也会修改邮件处理程序,到时我们将能灵活地发送自己的邮件.(待续)