⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uploadfile.java

📁 一个简的javamail收发邮件功能
💻 JAVA
字号:
package email;

import java.io.*;
import java.util.*;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
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.*;
import javax.servlet.http.*;

import com.oreilly.servlet.MultipartRequest;

public class UploadFile extends HttpServlet {
  private String dir = null;
  public void init(ServletConfig config) throws ServletException{
	  super.init(config);
	  dir = config.getInitParameter("uploadDir");
	    if (dir == null) {
	      throw new ServletException("Please supply uploadDir parameter");
	    }
	  File dirf = new File(dir);
	  if(!dirf.exists())dirf.mkdir();
  }
  public void doPost(HttpServletRequest req, HttpServletResponse res)
                                throws ServletException, IOException {
      req.setCharacterEncoding("ISO-8859-1");
	  res.setContentType("text/html");
      PrintWriter out = res.getWriter();
      UserConfig uc = 
    	  (UserConfig)req.getSession().getAttribute("userConfig");
      String host= uc.getSmtp_host() ; 
	  String user= uc.getUser_count();
	 String password= uc.getUser_pwd(); 
	 System.out.println("fdgfdgfdgfdg5555~~~~~~~~~"+host+":"+uc.getFrom());
    try {
    	System.out.println("~~~~~~开始收发邮件~~~~~~~");
      MultipartRequest multi =
        new MultipartRequest(req, dir, 50 *1024 * 1024,"GBK",
          new com.oreilly.servlet.multipart.DefaultFileRenamePolicy());

      //获得属性,并生成Session对象 
      Properties props=new Properties(); 
      Session sendsession; 
      Transport transport; 
      sendsession = Session.getInstance(props, null); 
      //向属性中写入SMTP服务器的地址
      props.put("mail.smtp.host",host);
      //设置SMTP服务器需要权限认证
      props.put("mail.smtp.auth","true");
      //设置输出调试信息
      sendsession.setDebug(true);
      //根据Session生成Message对象
      Message message = new MimeMessage(sendsession);
      //设置发信人地址
      message.setFrom(new InternetAddress(uc.getFrom())) ;
      //设置e-mail发送时间
      message.setSentDate(new Date()); 
      
      System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
      
      // Print the parameters we received
  
      Enumeration params = multi.getParameterNames();
      //建立第一部分:文本正文
	  BodyPart messageBodyPart=new MimeBodyPart();
	  System.out.println("~~~~~~MuitiPart~~~~~~~~~~~");
      while (params.hasMoreElements()) {
        String name = (String)params.nextElement();
        String value = multi.getParameter(name);
        System.out.println("~~~~"+name + " = " + value);
        if(name.equalsIgnoreCase("to")){System.out.println("to==>"+value);
            //设置收信人地址
		      message.setRecipient(Message.RecipientType.TO,new InternetAddress(multi.getParameter(name)));
        }
        if(name.equalsIgnoreCase("subject")){
           //设置e-mail标题
        	 message.setSubject( multi.getParameter(name));
        }
        if(name.equalsIgnoreCase("text")){
//        	新建一个存放信件内容的BodyPart对象
        	//BodyPart mdp=new MimeBodyPart();
//        	给BodyPart对象设置内容和格式/编码方式
        	//messageBodyPart.setContent( multi.getParameter(name),"text/html");
//        	新建一个MimeMultipart对象用来存放BodyPart对
        	//Multipart mm=new MimeMultipart();
            //象(事实上可以存放多个)
        	//mm.addBodyPart(messageBodyPart);//将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)
        	//message.setContent(mm);//把mm作为消息对象的内容
        	System.out.println("!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~S!");
             //设置e-mail内容
        	 message.setText( multi.getParameter(name));
        	 System.out.println("邮件内容:"+message.getContent());
        	 messageBodyPart.setText( multi.getParameter(name));
        	 //messageBodyPart.setContent(mm);
        }
      
      }
      // Show which files we received
        //建立多个部分Multipart实例
	    Multipart multipart = new MimeMultipart();
	    multipart.addBodyPart(messageBodyPart);
        //建立第二部分:附件	 
	    messageBodyPart=new MimeBodyPart();
	    // 获得附件
	    System.out.println(")()()()()()()()()(");
      Enumeration files = multi.getFileNames();
      
      System.out.println("~~~~~~~~~Attachment~~~~~~~~~~~~~~");
      String filename = "";
      while (files.hasMoreElements()) {
    	System.out.println("(~~~~~~~~~~~~~~~~~)");
        String name = (String)files.nextElement();
        System.out.println("name:"+name);
        filename = multi.getFilesystemName(name);
        if(filename!=null){
        System.out.println(filename);
        String original = multi.getOriginalFileName(name);
        System.out.println(filename+"*&^&^&^*&*&(*)$&^*(*)");
        String type = multi.getContentType(name);
        File f = multi.getFile(name);
        CommonFile cf = new CommonFile(filename,dir);
        if (filename != null && !filename.equals(original)) {
            System.out.println("original file name: " + original);
            cf.setFileName(original);
          }
        System.out.println("type: " + type);
        if (f != null) {
          System.out.println("length: " + f.length());
        }
        uc.setCommonFile(cf);
        System.out.print("name: " + name+"==>");
        System.out.println("filename: " + filename+":CommonFile.class==>"+cf.getFileName());
        System.out.println("Encoding filename:"+new String(filename.getBytes("ASCII"),"GBK"));
        FileDataSource fds = new FileDataSource(f);
        //设置附件的数据处理器
	    messageBodyPart.setDataHandler(new DataHandler(fds));
	    // 设置附件文件名
	    messageBodyPart.setFileName(MimeUtility.encodeText(filename,null,"B"));
        //加入第二部分
	    multipart.addBodyPart(messageBodyPart);
        // 将多部分内容放到e-mail中
	    message.setContent(multipart);
      }}
      System.out.println("while 之后");
	    //保存对于e-mail的修改
	    message.saveChanges();
	    System.out.println("while 之后2");
	    //根据Session生成Transport对象
	      transport=sendsession.getTransport("smtp"); 
	      System.out.println("while 之后3");
	      //连接到SMTP服务器
	      transport.connect(host,user,password);
	      System.out.println("while 之后4");
	      //发送e-mail
	      transport.sendMessage(message,message.getAllRecipients());
	      System.out.println("while 之后5");
	      //关闭Transport连接
	      transport.close();
	      //附件发送后,将存在本地的文件删除
	     // System.out.println(uc.getCommonFile().getFileName()+":最后文件名:"+filename+":"+filename==null);
	      if(filename!=null&&filename.length()!=0){
	    	  System.out.println(uc.getCommonFile().getFileName()+":最后文件名:"+filename+":"+filename==null);    	  
	     File file = new File(dir+""+filename);
	     System.out.println("fiel isExist:"+file.exists());
	     if(file.exists()){
	    	 if(file.isFile()){
	    	 file.delete();
	    	 System.out.println("文件已删除");
	    	 } }
        
	      }
        System.out.println("~~~~~~~~~~~~~~~finished~~~~~~~~~~~~~~~~~");
      
      System.out.println("~~~~~~~~~Emitted~~~~~~~~~~~");
      req.getSession().setAttribute("userConfig",uc);
      System.out.println("成功发送.....");
    }
    catch (Exception e) {
    System.out.println(e.getMessage());
    }
         req.getSession().setAttribute("message","邮件已发送...");
         res.sendRedirect("mailSender.jsp");
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -