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

📄 sendsave.jsp

📁 一个实现邮件收发功能的客户端程序
💻 JSP
字号:
<%@ page contentType="text/html; charset=utf-8" session="true" errorPage="frame_user_error.jsp" %>
<%@ include file="validate.jsp" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="net.meybo.util.*" %>
<%@ page import="java.util.*" %>
<%
	String message=null;
	boolean op=false;
	//Email email=saveMail(form,user);
	Map textElement = new HashMap();
	Map fileElement = new HashMap();
	DiskFileUpload df = new DiskFileUpload();
	//df.setHeaderEncoding(request.getCharacterEncoding());
	df.setHeaderEncoding("utf-8");
	df.setSizeMax(30*1024*1024);
	df.setSizeThreshold(100*1024);
	List reqPars = null;
	try
	{
		reqPars = df.parseRequest(request);
		long fileSize=0;
		for(int i = 0; i < reqPars.size(); i++)
		{
			FileItem it = (FileItem)reqPars.get(i);
			if(it.isFormField()) {
				textElement.put(it.getFieldName(), it.getString("UTF-8"));
				//System.out.println(it.getFieldName()+":"+it.getString("UTF-8"));
			}
			else {
				fileElement.put(it.getFieldName(), it);
				fileSize+=it.getSize();
			}
		}
		if(fileSize>25*1024*1024) {
			throw new Exception("附件大小不能超过25M");
		}
	}
	catch(Exception e) {
		e.printStackTrace();
		//logger.error(e);
		throw new Exception("附件大小不能超过25M");
	}
	String cid=CommUtil.null2String((String)textElement.get("cid"));
	String toUser=CommUtil.null2String((String)textElement.get("toUser"));
	String copyTo=CommUtil.null2String((String)textElement.get("copyTo"));
	String secretTo=CommUtil.null2String((String)textElement.get("secretTo"));
	String subject=CommUtil.null2String((String)textElement.get("subject"));
	String content=CommUtil.null2String((String)textElement.get("text"));
	String priority=CommUtil.null2String((String)textElement.get("priority"));
	String needAutoReply=CommUtil.null2String((String)textElement.get("needAutoReply"));
	String needNotify=CommUtil.null2String((String)textElement.get("needNotify"));
	String oldFiles=CommUtil.null2String((String)textElement.get("files"));
	String box=CommUtil.null2String((String)textElement.get("box"));

	boolean isHtml=false;
	Map files=fileElement;
	MultiPartEmail email=null;
	if(content.indexOf("<html>")==0 && (content.endsWith("</html>")))
	{
		content=content.substring("<html>".length(),content.lastIndexOf("</html>"));
		isHtml=true;
		email=new HtmlEmail();
	}
	else
		email=new MultiPartEmail();
	email.setCharset("utf-8");
	if(!cid.equals(""))
	{
		MimeMessage mime=EmailManage.getMail(user.getUserName(),user.getServerDomain(),box,cid);
		if(mime!=null)
		{
			if(!oldFiles.equals("")) {
				String[] file=oldFiles.split(",");
				ParseMimeMessage oldemail=new ParseMimeMessage(mime);
				for(int i=0;i<file.length;i++) {
					String fileName=file[i];
					try {
						ByteArrayDataSource dataSource=new ByteArrayDataSource(oldemail.getAttach(fileName),null);
						email.attach(dataSource,MimeUtility.encodeText(fileName),fileName);
						System.out.println("处理附件:"+fileName);
					}
					catch(Exception e) {
						System.out.println("附件处理错误:"+e);
					}
				}
			}
			try{
				//email.addPart((MimeMultipart)mime.getContent());
			}
			catch(Exception e)
			{
				System.out.println("出错!"+e);
				e.printStackTrace();
			}
		}
	}
	//else
	//{
		cid=CommUtil.getOnlyID()+".eml";
	//}
	
	if(!files.isEmpty()) {
		Iterator it=files.values().iterator();
		while(it.hasNext()) {
			FileItem file=(FileItem)it.next();
			if(file.getName()!=null && (!file.getName().equals(""))) {
				String fileName=file.getName();
				fileName=fileName.substring(fileName.lastIndexOf("\\")+1);
				String newName=CommUtil.getOnlyID()+fileName.substring(fileName.lastIndexOf("."));
				//System.out.println(fileName);
				try {
					ByteArrayDataSource dataSource=new ByteArrayDataSource(file.getInputStream(),null);
					email.attach(dataSource,MimeUtility.encodeText(fileName),fileName);
				}
				catch(Exception e) {
					System.out.println("附件处理错误:"+e);
				}
			}
		}
	}
	try {
		if(isHtml) {
			//((HtmlEmail)email).setTextMsg("can't");
			((HtmlEmail)email).setHtmlMsg(content);
		}
		else {
			email.setMsg(content);
			//email.se
		}
		email.setSubject(subject);
		System.out.println(user.getUserName()+"@"+user.getServerDomain()+"/"+user.getUserName());
		email.setFrom(user.getUserName()+"@"+user.getServerDomain(),user.getUserName());
		System.out.println(user.getSmptpHost());		
		email.setHostName(user.getSmptpHost());	//MeyboMail使用hostIP.开源的使用smtpHost
		List list=EmailManage.formatAddress(toUser);
		if(list!=null)
		{
			for(int i=0;i<list.size();i++)
			{
				Map map=(Map)list.get(i);
				email.addTo((String)map.get("email"),(String)map.get("name"));
			}
		}
		list=EmailManage.formatAddress(copyTo);
		
		if(list!=null) {
			for(int i=0;i<list.size();i++) {
				Map map=(Map)list.get(i);
				email.addCc((String)map.get("email"),(String)map.get("name"));
			}
		}
		list=EmailManage.formatAddress(secretTo);
		
		if(list!=null) {
			for(int i=0;i<list.size();i++) {
				Map map=(Map)list.get(i);
				email.addBcc((String)map.get("email"),(String)map.get("name"));
			}
		}
	}
	catch(Exception e) {
		System.out.println("保存邮件出错!"+e);
		e.printStackTrace();
	}
	message="邮件保存成功";
	//form.addResult("msg","邮件保存成功!");
	//form.set("cid",cid);
	//return email;

	//Email email=null;
	if(email!=null)
	{
		try {
			email.setAuthentication(user.getUserName(),user.getPassword());
			email.send();
			//String cid=CommUtil.null2String(form.get("cid"));
			java.io.OutputStream os=new java.io.FileOutputStream(Config.getMailPath()+"/"+user.getServerDomain()+"/"+user.getUserName()+"/sendbox/"+cid);
			email.buildMimeMessage();
			email.getMimeMessage().writeTo(os);
			os.close();
			op=true;
			email=null;
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
	String nextPage=null;
	if(op) {
		//form.addResult("msg","发送邮件成功!");
		//form.set("box","inbox");
		//return doList(form,module,user);
		message="发送邮件成功";
		nextPage="list.jsp?box=sendbox";
	}
	else {
		//form.addResult("msg","发送邮件失败,请重新发送!");
		//return module.findPage("write");
		message="发送邮件失败,请重新发送";
		nextPage="write.jsp?cid="+cid;
	}
%>
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<title>发送收件</title>
<link href="css/login.css" rel="stylesheet" type="text/css">
</head>

<body leftmargin="0" rightmargin="0" topmargin="0" bottommargin="0">
<script type="text/javascript">
<!--
	<%if(op) {%>
		alert("<%=message%>");
	<%}else{%>
		alert("发送邮件失败,请重新发送");
	<%}%>
	location.replace("<%=nextPage%>");
//-->
</script>
</body>
</html>

⌨️ 快捷键说明

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