需要的jar包在附件中
<接上传功能后>
com.jspsmart.upload.File tempFile=upload.getFiles().getFile(0);
String FileName =tempFile.getFileName(); //上传文件的文件名
String FileNamePath= filePath+"/"+FileName; //FileName 代表文件上传后的地址
Properties props = new Properties(); // 创建Properties 类用于记录邮箱的一些属性
props.put("mail.smtp.auth", "true"); // 表示SMTP发送邮件,必须进行身份验证
props.put("mail.smtp.host", "smtp.qq.com"); //此处填写SMTP服务器
props.put("mail.smtp.port", "587"); //端口号
props.put("mail.user", "*@qq.com"); // 此处填写你的账号
props.put("mail.password", " **********"); // // 此处的密码就是前面说的16位STMP口令这边需要从qq邮箱中获得
final String userName = props.getProperty("mail.user");
final String password = props.getProperty("mail.password");
Authenticator authenticator = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(userName, password); // 用户名、密码
}
};
Session mailSession = Session.getInstance(props, authenticator);
MimeMessage message = new MimeMessage(mailSession); // 创建邮件消息
InternetAddress form; // 设置发件人
try {
form = new InternetAddress(
props.getProperty("mail.user"));
try {
message.setFrom(form);
} catch (MessagingException e) {
e.printStackTrace();
}
} catch (AddressException e) {
e.printStackTrace();
}
InternetAddress to;
try {
to = new InternetAddress("*@qq.com");//
try {
message.setRecipient(RecipientType.TO, to);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (AddressException e1) {
e1.printStackTrace();
}
try {
message.setSubject("简历"); // 设置邮件标题
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Multipart multipart = new MimeMultipart();
BodyPart contentPart = new MimeBodyPart(); // 设置邮件的文本内容
try {
contentPart.setText("邮箱:"+emaill);
multipart.addBodyPart(contentPart);
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(FileNamePath);
messageBodyPart.setDataHandler(new DataHandler(source)); // 添加附件的内容
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); // 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
messageBodyPart.setFileName("=?GBK?B?"
+ enc.encode(FileName.getBytes("GBK")) + "?=");
multipart.addBodyPart(messageBodyPart);//html.setFileName("=?GBK?B?" + enc.encode(file.getName().getBytes("GBK")) + "?=");
message.setContent(multipart); // 将multipart对象放到message中
message.saveChanges(); // 保存邮件
} catch (MessagingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
mc.addMailcap("text/html;; x-Java-content-handler=com.sun.mail.handlers.text_html");
mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
CommandMap.setDefaultCommandMap(mc);
Transport.send(message);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
功能完美实现。