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 + -
显示快捷键?