📄 uploadfile.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 + -