文件的加密压缩部分,推荐使用zip4j包,非常好用。
package util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.UUID;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;
public class FileUtils {
public static final String DEFAULT_PATH = "test/";
public static String generatePath(String fileName,String basePath){
String suffix = fileName.substring(fileName.indexOf("."));
String path = basePath + System.nanoTime() + UUID.randomUUID() + suffix;
return path.replace("-","");
}
public static String generatePath(String fileName){
return generatePath(fileName,DEFAULT_PATH);
}
/**
*@描述 :用于券码导出并压缩加密
*@创建人:lee
*@创建时间:2017年7月10日 下午1:38:59
*@修改人:
*@修改时间:
*@修改描述:
*@param srcCode
*@param filePath
*@param password
*@param file
*/
public static void EncryptAndZip(StringBuffer srcCode,String filePath,String password,File file) {
String name="cardList"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
try {
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}
file.createNewFile();
byte bt[] = new byte[1024];
bt = srcCode.toString().getBytes();
FileOutputStream fos=new FileOutputStream(file);
fos.write(bt, 0, bt.length);
fos.close();
ZipFile zipFile = new ZipFile(filePath+"/"+name+".zip");
ArrayList<File> fileAddZip = new ArrayList<File>();
fileAddZip.add(file);
ZipParameters parameters = new ZipParameters();
parameters.setEncryptFiles(true);
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);
parameters.setPassword(password);
zipFile.createZipFile(fileAddZip, parameters);
file.delete();
} catch (IOException | ZipException e) {
e.printStackTrace();
}
}
}
邮件发送代码,还是喜欢直接上代码。。。
package action.emailUtils;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.*;
import java.util.Properties;
public class SendMail {
private String host = "";
private String from = "";
private String to = "";
private String affix = "";
private String affixName = "";
private String user = "";
private String pwd = "";
private String subject = "";
public void setAddress(String from, String to, String subject) {
this.from = from;
this.to = to;
this.subject = subject;
}
public void setAffix(String affix, String affixName) {
this.affix = affix;
this.affixName = affixName;
}
public void send(String host, String user, String pwd) {
this.host = host;
this.user = user;
this.pwd = pwd;
Properties props = new Properties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", 465);
props.put("mail.smtp.ssl.enable", true);
Session session = Session.getDefaultInstance(props);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(
to));
message.setSubject(subject);
Multipart multipart = new MimeMultipart();
BodyPart contentPart = new MimeBodyPart();
contentPart.setText("请妥善保存券码···");
multipart.addBodyPart(contentPart);
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(affix);
messageBodyPart.setDataHandler(new DataHandler(source));
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
messageBodyPart.setFileName("=?GBK?B?"
+ enc.encode(affixName.getBytes()) + "?=");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host, user, pwd);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
File file = new File("D:\\temp\\aa.zip");
try {
OutputStream os = new FileOutputStream(file);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os,"utf-8"));
bw.write("hello");
bw.close();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
SendMail cn = new SendMail();
cn.setAddress("654321@qq.com", "123456@qq.com", "测试券码发送");
cn.setAffix("D:\\temp\\aa.zip", "aa.zip");
cn.send("smtp.qq.com", "654321@qq.com", "此处填SMTP服务器密码");
}
}
注意,要去qq邮箱里获取SMTP服务器密码!!!不然会报错的,恩,就这样,希望会对你 有所帮助。