mailsendaction.java

来自「功能是公安和学校的管理系统,用struts+hibernate+spring等匡」· Java 代码 · 共 378 行

JAVA
378
字号
package com.comingnet.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.*;
import java.util.ArrayList;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;

import com.comingnet.bean.EmailInfor;
import com.comingnet.bean.UserInfor;
import com.comingnet.bean.sendMailNew;
import com.comingnet.intercepter.UserSessionAware;
import com.opensymphony.xwork2.ActionSupport;
import com.comingnet.bean.*;
import com.db.DBUtils;
import com.db.KeyGenerator;
public class mailSendAction extends ActionSupport implements UserSessionAware,ServletRequestAware{
	private UserInfor userSession=null;
	private String auid_test;
	private String zs_mailzh;
	private String cs_mailzh;
	private String ms_mailzh;
	private String title;
	private String message;
	private String hjcd;
	private String bczt;
	private String mailselect;
	
	private EmailInfor emailinfor=null;
	
	/* 附件信息*/
	private HttpServletRequest request=null;
	//用于获取和保存上传文件信息
	private String[] imageFileName;
	private File[] 	 myFile;
	private String[] myFileFileName;
	private String[] myFileContentType;
	private static final int BUFFER_SIZE = 16 * 1024;
	private ArrayList<MailFileAffix> filelist;
    private int yjid;
	/* 附件信息*/
    
	public EmailInfor getEmailinfor() {
		return emailinfor;
	}
	public void setEmailinfor(EmailInfor emailinfor) {
		this.emailinfor = emailinfor;
	}

	public String getBczt() {
		return bczt;
	}
	public void setBczt(String bczt) {
		this.bczt = bczt;
	}
	public String getCs_mailzh() {
		return cs_mailzh;
	}
	public void setCs_mailzh(String cs_mailzh) {
		this.cs_mailzh = cs_mailzh;
	}
	public String getHjcd() {
		return hjcd;
	}
	public void setHjcd(String hjcd) {
		this.hjcd = hjcd;
	}
	public String getMailselect() {
		return mailselect;
	}
	public void setMailselect(String mailselect) {
		this.mailselect = mailselect;
	}
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
	public String getMs_mailzh() {
		return ms_mailzh;
	}
	public void setMs_mailzh(String ms_mailzh) {
		this.ms_mailzh = ms_mailzh;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getZs_mailzh() {
		return zs_mailzh;
	}
	public void setZs_mailzh(String zs_mailzh) {
		this.zs_mailzh = zs_mailzh;
	}
	public String getAuid_test() {
		return auid_test;
	}
	public void setAuid_test(String auid_test) {
		this.auid_test = auid_test;
	}
	public UserInfor getUserSession() {
		return userSession;
	}
	public void setUserSession(UserInfor userSession) {
		this.userSession = userSession;
	}
	public ArrayList<MailFileAffix> getFilelist() {
		return filelist;
	}
	public void setFilelist(ArrayList<MailFileAffix> filelist) {
		this.filelist = filelist;
	}
	public String[] getImageFileName() {
		return imageFileName;
	}
	public void setImageFileName(String[] imageFileName) {
		this.imageFileName = imageFileName;
	}
	public File[] getMyFile() {
		return myFile;
	}
	public void setMyFile(File[] myFile) {
		this.myFile = myFile;
	}
	public String[] getMyFileContentType() {
		return myFileContentType;
	}
	public void setMyFileContentType(String[] myFileContentType) {
		this.myFileContentType = myFileContentType;
	}
	public String[] getMyFileFileName() {
		return myFileFileName;
	}
	public void setMyFileFileName(String[] myFileFileName) {
		this.myFileFileName = myFileFileName;
	}

	public HttpServletRequest getRequest() {
		return request;
	}
	public void setRequest(HttpServletRequest request) {
		this.request = request;
	}

	/* 接口的方法*/
	public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
       this.request = request;
	}
	
	public String execute() throws Exception
	{	
		
		UserInfor userinfor=getUserSession();	
		String username=userinfor.getUsername();              //发送人姓名
		
    	EmailAccount  mailcountinfor=null;                     //获取用户设置的邮箱信息
		EmailAccountDAO   maildao=new EmailAccountDAO();		                    
		mailcountinfor=maildao.queryById(Integer.parseInt(getMailselect()));		
		
		//System.out.println("mailSendAction文件选择--------->:"+(Integer.parseInt(getMailselect())));
	
   	  if (mailcountinfor != null) {
   		
   		int yj=0;                    //邮件ID
   		int  fjzt=0;                 //标识是否有附件
   		if (getBczt() != null) {  //把邮件附件信息保存到数据库中
			EmailInfor mailinfor = new EmailInfor();
			mailinfor.setYjbt(getTitle());
			mailinfor.setYjfjdz(mailcountinfor.getZhdz());
			mailinfor.setYjnr(getMessage());
			mailinfor.setYjwbzs(getZs_mailzh());
			mailinfor.setYjwbcs(getCs_mailzh());
			mailinfor.setYjwbms(getMs_mailzh());

			mailinfor.setYjryxm(username);

			// System.out.println("mailSendAction-------mailinfor------------->:"+mailinfor.getFiles().get(0).getNewFilename());
			if (getHjcd() == null)
				mailinfor.setYjhfclass("普通");
			else
				mailinfor.setYjhfclass("紧急");
			MailBcDAO bcdao = new MailBcDAO();
			bcdao.MailBC(mailinfor, userinfor);
			
			if (myFileFileName != null) {
				saveFilesInFolder();// 保存到指定路径
				/* 增加邮件 */
				mailinfor.setFiles(this.getFilelist());
			}
			yj = bcdao.getYjid() ;
			if (filelist != null) {
				SaveToDB(yj); // 附件信息保存到数据库
				fjzt=1;
			}
		} 
   		   
   		    //String fj_path=ServletActionContext.getServletContext().getRealPath("/mail/mailFiles"); //附件路径
   		    String fj_path=ServletActionContext.getServletContext().getRealPath("/mail/mailFiles/"); //附件路径
   		    fj_path=fj_path.replace("\\", "\\\\");
   		
   		    //System.out.println("附件路径:"+fj_path+"    "+fj_path.replaceAll("\\", "\\\\"));
   		  
			sendMailNew themail = new sendMailNew(mailcountinfor.getZhsmtp()); // 设置smtp服务器
			themail.setNeedAuth(true); // 设置验证
			if (themail.setSubject(getTitle()) == false)
				return ERROR; // 主题
			if (themail.setBody(getMessage()) == false)
				return ERROR; // 正文
			if (themail.setTo(getZs_mailzh()) == false)
				return ERROR; // 主送
			if (themail.setCopyTo(getCs_mailzh()) == false)
				return ERROR; // 抄送
			if (themail.setMSTo(getMs_mailzh()) == false)
				return ERROR; // 密送
			if (themail.setFrom(mailcountinfor.getZhdz()) == false)
				return ERROR; // 发件地址
            //增加附件
			String fjname="";
			if(fjzt==1)//说明有附件
			{
				Connection conn_fj=null;
				PreparedStatement stmt_fj=null;
				ResultSet rs_fj=null;
				try
				{
					conn_fj=DBUtils.getConnection();
					stmt_fj=conn_fj.prepareStatement("select fjnewname from yjfj where yjid=?");
					stmt_fj.setInt(1,yj);
					rs_fj=stmt_fj.executeQuery();
					while(rs_fj.next())
					{
						fjname=fj_path+"\\"+rs_fj.getString("fjnewname");
						themail.addFileAffix(fjname); 			
					}
				}catch(Exception e)
				{
					System.out.println(e);
				}finally
				{
					DBUtils.closeResultSet(rs_fj);
					DBUtils.closeStatement(stmt_fj);
					DBUtils.closeConnection(conn_fj);
				}
			}
			
			themail.setNamePass(mailcountinfor.getZhdz(), mailcountinfor.getZhmm()); // 验证信息
			if (themail.sendout() == false)
				return ERROR;
			
		}
		return SUCCESS;
	}				   
	 // 附件信息保存到数据库
	public void SaveToDB(int yjid){	
		Connection conn=null;
        PreparedStatement stmt=null;
        String sqlStr = "insert into yjfj(fjid,fjoldname, fjnewname,yjid) values (?,?,?,?)"  ;
        
	 try{    			    			
		  for(int i=0; i<filelist.size(); i++){
			  	 
			  conn = DBUtils.getConnection() ;
			  	 
				 stmt = conn.prepareStatement(sqlStr);
				 stmt.setInt(1, KeyGenerator.getInstance().getNextKey("yjfj"));			  			
				 stmt.setString(2,filelist.get(i).getOldFilename());
				 stmt.setString(3,filelist.get(i).getNewFilename());		 			 
				 stmt.setFloat(4,yjid);
				 stmt.executeUpdate();				 
				 
//				 System.out.println("mailSendAction-------------------->:"+filelist.size());
				 DBUtils.closeStatement(stmt);
			   }	//end for      
		    		 
	    }catch(Exception e)
        {
        	System.out.println("mailSendAction ----------->:保存到附件表中出错"+e);
        	
        }finally
        {
        	DBUtils.closeStatement(stmt);
        	DBUtils.closeConnection(conn);
         }      
        	
	}
     /*处理附件的相关的方法
    
	/**
	 * 将文件复制到给定的文件夹
	 * @param src	原文件
	 * @param dst	目标文件
	 */
	private static void copy(File src, File dst) {
		InputStream in = null;
		OutputStream out = null;
		try {
			in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);
			out = new BufferedOutputStream(new FileOutputStream(dst),
					BUFFER_SIZE);
			byte[] buffer = new byte[BUFFER_SIZE];
			int i = 0 ;
			System.out.println("-------------------------iii------------------>"+i) ;
			while (in.read(buffer) > 0) {
				out.write(buffer);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (null != in)
					in.close();
				if (null != out)
					out.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 获取文件的扩展名
	 * @param fileName	包含扩展名的文件名
	 * @return	文件的扩展名
	 */
	private static String getExtention(String fileName) {
		int pos = fileName.lastIndexOf(".");
		return fileName.substring(pos);
	}
	/**
	 * 将上传的文件保存到mail/mailFiles文件夹中,并更名为:当前时间+文件序号+扩展名
	 *
	 */
	private void saveFilesInFolder(){
		int j ;
		if(myFile!=null){
			if(myFile.length != 0){
				imageFileName = new String[myFile.length];
				filelist = new ArrayList<MailFileAffix>();
			}
			for(int i=0; i<myFile.length; i++){
				MailFileAffix file = new MailFileAffix();
				file.setOldFilename(myFileFileName[i]);
				imageFileName[i] = new Date().getTime()+ i + getExtention(myFileFileName[i]);//保证在同一时间内上传的文件不重名
				file.setNewFilename(imageFileName[i]);
				File imageFile = new File(ServletActionContext.getServletContext().getRealPath("/mail/mailFiles")+ "/" + imageFileName[i]);
				j = 0 ;
				copy(myFile[i], imageFile);
				filelist.add(file);				
			}	
			this.setFilelist(filelist);
	//		emailinfor.setFiles(filelist);
			
		}
	}
	public int getYjid() {
		return yjid;
	}
	public void setYjid(int yjid) {
		this.yjid = yjid;
	}
	

}

⌨️ 快捷键说明

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