JSP与JavaMail (六)
来源:互联网 发布:苏州大数据培训课程 编辑:程序博客网 时间:2024/05/20 12:25
<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>七.编写灵活的发送程序 本小节没加什么新鲜的东西,但是综合了以前的所有内容,可以让你灵活地发送你想要发的邮件.看了本小节之后对你会感觉到非常有用.更改后的撰写界面程序如下:-------------------------------------------------------------------------------------------<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>撰写邮件</title></head><body><form action="testall.jsp" method="post" name="form1"> <table width="75" border="0" align="center" cellspacing="1" bgcolor="#006600" class="black"> <tr bgcolor="#FFFFFF"> <td width="24%">收信人地址:</td> <td width="76%"> <input name="to" type="text" id="to"></td> </tr> <tr bgcolor="#FFFFFF"> <td>主题:</td> <td> <input name="title" type="text" id="title"></td> </tr> <tr> <td height="18" colspan="2" bgcolor="#FFFFFF">信件类型 <select name="emailtype" id="emailtype"> <option value="text/plain" selected>Text</option> <option value="text/html">Html</option> </select></td> </tr> <tr> <td height="53" colspan="2" bgcolor="#FFFFFF"><textarea name="content" cols="50" rows="5" id="content"></textarea></td> </tr> <tr align="center"> <td colspan="2" bgcolor="#FFFFFF">附件1(自定义): <input name="fj1" type="text" id="fj1"> (输入文本信息) </td> </tr> <tr align="center" valign="bottom"> <td colspan="2" bgcolor="#FFFFFF">附件2(本地): <input name="fj2" type="file" id="fj2" size="10"></td> </tr> <tr align="center"> <td colspan="2" bgcolor="#FFFFFF">附件3(远程): <input name="fj3" type="text" id="fj3" value="http://"> (输入URL)</td> </tr> <tr align="center"> <td colspan="2" bgcolor="#FFFFFF"> <input type="submit" name="Submit" value="发送"> <input type="reset" name="Submit2" value="重置"></td> </tr> </table></form></body></html> 处理邮件的JSP程序如下:----------------------------------------------------------------------------------------<%@ 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 emailtype=request.getParameter("emailtype");//获取email类型String tcontent=request.getParameter("content");String tfj1=request.getParameter("fj1");String tfj2=request.getParameter("fj2");String tfj3=request.getParameter("fj3");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,emailtype ";charset=gb2312");//给BodyPart对象设置内容和格式/编码方式mm.addBodyPart(mdp);//将含有信件内容的BodyPart加入到MimeMultipart对象中//设置信件的附件1(自定义附件:直接将所设文本内容加到自定义文件中作为附件发送)mdp=new MimeBodyPart();//新建一个存放附件的BodyPartDataHandler dh=new DataHandler(tfj1,"text/plain;charset=gb2312"); //新建一个DataHandler对象,并设置其内容和格式/编码方式mdp.setFileName("text.txt");//加上这句将作为附件发送,否则将作为信件的文本内容mdp.setDataHandler(dh);//给BodyPart对象设置内容为dhmm.addBodyPart(mdp);//将含有附件的BodyPart加入到MimeMultipart对象中//设置信件的附件2(用本地上的文件作为附件)mdp=new MimeBodyPart();FileDataSource fds=new FileDataSource(tfj2);dh=new DataHandler(fds);int ddd=tfj2.lastIndexOf("//");String fname=tfj2.substring(ddd);//提取文件名String ffname=new String(fname.getBytes("gb2312"),"ISO8859-1");//处理文件名是中文的情况mdp.setFileName(ffname);//可以和原文件名不一致,但最好一样mdp.setDataHandler(dh);mm.addBodyPart(mdp);//设置信件的附件3(用远程文件作为附件)mdp=new MimeBodyPart();URL urlfj=new URL(tfj3);URLDataSource ur=new URLDataSource(urlfj); //注:这里用的参数只能为URL对象,不能为URL字串,在前面类介绍时有误(请谅解),这里纠正一下.dh=new DataHandler(ur);int ttt=tfj3.lastIndexOf("/");String urlname=tfj3.substring(ttt);//String urlfname=new String(urlname.getBytes("gb2312"),"ISO8859-1");//不知怎么回事,这里不能处理中文问题mdp.setFileName(urlname);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> 到目前为止,我们基本上已学会了发各种类型的邮件了.但是,我们怎样去收自己的邮件呢,下一次再说吧:)! (待续)