本文使用Orielly上传包实现 验证类: package com.test.auth; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class Authentic extends Authenticator ... { protected PasswordAuthentication getPasswordAuthentication() ...{ String username = "daryl715"; //大多数是你邮件@前面的部分 String pwd = "smallfish1009"; return new PasswordAuthentication(username, pwd); }} 发送页面: <% ... @ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030" %> <! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > < html > < head > < meta http-equiv ="Content-Type" content ="text/html; charset=GB18030" > < title > Insert title here </ title > </ head > < body > < form name ="sendmail" action ="javafilemail.jsp" method ="post" enctype ="multipart/form-data" > 发信人: < input type ="text" name ="from" />< br > 收件人: < input type ="text" name ="recieve" />< br > 主题: < input type ="text" name ="subject" />< br > 内容: < textarea name ="content" cols =40 rows =5 ></ textarea >< br > < input type ="submit" value ="发送" > 附件: < input type ="file" name ="filename" /> </ form > </ body > </ html > 发送代码: <% ... @ page import="javax.mail.*" %> <% ... @ page import="javax.mail.internet.*" %> <% ... @ page import="javax.activation.*" %> <% ... @ page import="java.util.*,java.io.*" %> <% ... @ page import="com.test.auth.*,com.oreilly.servlet.MultipartRequest" %> <% ... @ page contentType="text/html;charset=GB2312" %> < html > < head > < title > CH17 - JavaMail.jsp </ title > </ head > < body > < h2 > 利用JavaMail来传送电子邮件 </ h2 > <% ... InternetAddress[] address = null; request.setCharacterEncoding("GB2312"); String saveDirectory="/upload"; //设置上传目录 String contextPath=request.getSession().getServletContext().getRealPath(saveDirectory); File a=new File(contextPath); if(!a.isDirectory()){ a.mkdir(); } int maxPostSize=5*1024*1024; //设定大小为5M String enCoding="gb2312"; int count=0; MultipartRequest multi=new MultipartRequest(request,contextPath,maxPostSize,enCoding); String mailserver = "202.108.5.142"; String From = multi.getParameter("from"); String to = multi.getParameter("recieve"); String Subject = multi.getParameter("subject"); String messageText = multi.getParameter("content"); String filename=multi.getFilesystemName("filename"); boolean sessionDebug = false; try { // 设定所要用的Mail 服务器和所使用的传输协议 java.util.Properties props = System.getProperties(); props.put("mail.host",mailserver); props.put("mail.transport.protocol","smtp"); props.put("mail.smtp.auth", "true"); // 产生新的Session 服务 Authentic auth = new Authentic(); Session mailSession = Session.getDefaultInstance(props, auth); mailSession.setDebug(sessionDebug); Message msg = new MimeMessage(mailSession); // 设定传送邮件的发信人 System.out.println(From); msg.setFrom(new InternetAddress(From)); // 设定传送邮件至收信人的信箱 address = InternetAddress.parse(to,false); msg.setRecipients(Message.RecipientType.TO, address); // 设定信中的主题 msg.setSubject(Subject); // 设定送信的时间 msg.setSentDate(new Date()); System.out.println(filename); if(filename!=null){//如果有附件,就暂存邮件,处理附件后统一发送 File file=new File(filename); MimeBodyPart mbp1=new MimeBodyPart(); mbp1.setContent(messageText,"text/html;charset=gb2312"); FileDataSource fds=new FileDataSource(filename); MimeBodyPart mbp2=new MimeBodyPart(); mbp2.setDataHandler(new DataHandler(fds)); mbp2.setFileName(MimeUtility.encodeText(fds.getName(),"gb2312","B")); Multipart mp=new MimeMultipart(); mp.addBodyPart(mbp1); mp.addBodyPart(mbp2); msg.setContent(mp); } else{ msg.setContent(messageText,"text/html;charset=gb2312"); } // 设定传送信的MIME Type // 送信 Transport.send(msg); out.println("邮件已顺利传送"); } catch (MessagingException mex) { mex.printStackTrace(); } %> </ body > </ html >