发送带附件的邮件(包括文件上传)

public class SendAttachment extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  this.doPost(request, response);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
//  设置是163邮箱的地址
  String host="smtp.163.com";
//  设置邮箱账户名称
  String accountName="NutsISA";
//  设置邮箱账户密码
  String password="******";
//  上传的附件
  File uploadedFile=null;
//  发件个地址
  String from="";
//  收件人地址
  String to="";
//  邮件主题
  String subject="";
//  邮件内容
  String content="";
  
//  把附件内容上传到服务器
  //判断出提交过来的表单是否为文件上传表单,如果不是文件上传表单,在后续的处理中就不再用文件上传功能来处理这个表单
  boolean isMultipart=ServletFileUpload.isMultipartContent(request);
  if(isMultipart){
   FileItemFactory factory=new DiskFileItemFactory();
   ServletFileUpload upload=new ServletFileUpload(factory);//构造一个文件上传处理对象
   Iterator items;
   try{
    items=upload.parseRequest(request).iterator();//解析出表单中提交的所有文件内容
    while(items.hasNext()){
     FileItem item=(FileItem)items.next();
     if(!item.isFormField()){
//      取出上传文件的名称
      String name=item.getName();
      String fileName=name.substring(name.lastIndexOf('\\')+1,name.length());
      //上传到服务器以后存储的路径(上传的文件将被存储到当前应用项目的fileName字符串表示的文件夹中)
      String path=request.getRealPath(fileName);
//      上传文件
      uploadedFile=new File(path);
      item.write(uploadedFile);
     }else if(item.isFormField()){
//      下面取出表单中各个输入域的值
      if(item.getFieldName().equals("from")){
       from=item.getString();
      }else if(item.getFieldName().equals("to")){
       to=item.getString();
      }else if(item.getFieldName().equals("subject")){
       subject=item.getString();
      }else if(item.getFieldName().equals("content")){
       content=item.getString();
      }
     }
    }
   }catch(Exception e){
    e.printStackTrace();
   }
  }
//  设置邮件信息
  AttachmentSender sender=new AttachmentSender(host,accountName,password);
  sender.setFrom(from);//设置发件人
  sender.setTo(to);//设置收件人
  sender.setSubject(subject);//设置主题
  sender.setContent(content);//设置正文
  if(uploadedFile != null){
   String attachement=request.getRealPath(uploadedFile.getName());
   sender.addAttachment(attachement);
  }
//  打印发送邮件结果
  response.setContentType("text/html");
  response.setCharacterEncoding("gb2312");
  PrintWriter out=response.getWriter();
  if(sender.send()){
   out.print("<font size='1'>邮件发送成功!</font><br>");
  }else{
   out.print("<font size='1'>邮件发送失败!</font><br>");
  }
//  发送邮件以后,删除上传文件
  if(uploadedFile.exists())
   uploadedFile.delete();
 }
}

 

posted @ 2011-11-17 13:27  残星  阅读(1031)  评论(0编辑  收藏  举报