发送带附件的邮件: 1.前端输入页面加入file <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > < html > < head > < title > JavaMail3.html </ title > </ head > < body > < form action ="SEND3" method ="post" enctype ="multipart/form-data" > From: < input type ="text" name ="from" >< br > TO: < input type ="text" name ="to" >< br > Subject: < input type ="text" name ="subject" >< br > type: < select name =type size ="1" > < option value ="text/plain" > Text </ option > < option value ="text/html" > Html </ option > </ select >< br > file: < input type ="file" name ="filename" >< br > Context: < textarea rows ="4" cols ="40" name ="context" ></ textarea >< br > < input type ="submit" value ="send" > </ form > </ body > </ html > 2.编写servlet : SEND3.java package com.servlet; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.oreilly.servlet.MultipartRequest; public class SEND3 extends HttpServlet ... { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{ response.setContentType("text/html;charset=GB18080"); PrintWriter out = response.getWriter(); request.setCharacterEncoding("GB18030"); //重新封装请求对象--oreilly MultipartRequest req = new MultipartRequest(request,".",5*1024*1024,"GB18030"); String from = req.getParameter("from"); String to = req.getParameter("to"); String subject = req.getParameter("subject"); String context = req.getParameter("context"); String type=req.getParameter("type"); //获取文件名 String filename=req.getFilesystemName("filename"); // 确定要发送的邮件服务器的地址 String mailserver = "codedestiny-pc"; try ...{ // 设置邮件的传输协议 Properties prop = System.getProperties(); prop.put("mail.smtp.host", mailserver); // 建立邮件发送的连接 Session session = Session.getDefaultInstance(prop, null); // 创建发送的信息的载体 Message msg = new MimeMessage(session); // 设置相关的邮件属性 msg.setFrom(new InternetAddress(from)); // 点到点的发送 msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); msg.setSubject(subject); msg.setSentDate(new Date()); //处理文件的上传 if(filename != null)...{ //File file=new File(filename);//存留备份 MimeBodyPart mbp1 = new MimeBodyPart(); mbp1.setContent(context, type+";charset=GB18030");//对于邮件的普通信息的处理 //附件的处理 MimeBodyPart mbp2 = new MimeBodyPart(); FileDataSource fds = new FileDataSource(filename); mbp2.setDataHandler(new DataHandler(fds)); mbp2.setFileName(MimeUtility.encodeText(fds.getName(),"GB18030","B")); /**//* * file-----inputStream--|--FileDataSource---DataHandler(fds)接口的封装---mbp2 * */ Multipart mp = new MimeMultipart(); mp.addBodyPart(mbp1); mp.addBodyPart(mbp2); msg.setContent(mp); } else...{ msg.setContent(context, type+";charset=GB18080"); //信封的书写格式 } // 发送 Transport.send(msg); } catch (Exception e) ...{ e.printStackTrace(); } out.print("send ok"+"<br>"); out.print("<a href='http://localhost/mail/index.asp'>查看信件</a>"); out.flush(); out.close(); }}