zoukankan      html  css  js  c++  java
  • 发送带附件的邮件(包括文件上传)

    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();
     }
    }
  • 相关阅读:
    IE6中布局常见问题
    -bash: grunt-cli: command not found
    字符长度
    Mac下safari、chrome打开开发者工具快捷键
    line-height:150%和line-height:1.5的区别
    JavaScript中的apply()、call()、bind()
    JavaScript中的 this
    JavaScript中的var与作用域
    onload与ready的区别
    浏览器的同源策略
  • 原文地址:https://www.cnblogs.com/mingforyou/p/2252548.html
Copyright © 2011-2022 走看看