您的位置:首页 > 编程语言 > Java开发

java发送email带附件完整的web工程

2016-11-14 21:54 316 查看
package javaemail.bean;

/**
* Created by Administrator on 2016/11/10.
* 邮件信息数据
*/
public class EmailMessageBean {
private String subject;//标题
private String content;//内容
private String fujian;//附件
private String shoujihao;//手机号
private String zhaopinxinxi;//招聘信息
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

public String getFujian() {
return fujian;
}

public void setFujian(String fujian) {
this.fujian = fujian;
}

public String getShoujihao() {
return shoujihao;
}

public void setShoujihao(String shoujihao) {
this.shoujihao = shoujihao;
}

public String getZhaopinxinxi() {
return zhaopinxinxi;
}

public void setZhaopinxinxi(String zhaopinxinxi) {
this.zhaopinxinxi = zhaopinxinxi;
}
}

package javaemail.servlet;
import javaemail.bean.EmailMessageBean;
import javaemail.utils.EmailUtil;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;

import javax.mail.MessagingException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* Created by Administrator on 2016/11/10.
*/
public class SendEmailServlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
DiskFileItemFactory factory=new DiskFileItemFactory();
ServletFileUpload upload=new ServletFileUpload(factory);
try {
Map<String,String> result=new HashMap<>();
List<FileItem> items = upload.parseRequest(request);
for(FileItem item:items){
if(!item.isFormField()){
//将文件内容保存到磁盘上。
String path="/upload";
//获取真实路径
path=request.getSession().getServletContext().getRealPath(path);
String filename="";
filename=item.getName();//原始文件名
filename=(new Date()).getTime()+"." + FilenameUtils.getExtension(filename); //文件重命名
FileOutputStream os = new FileOutputStream(path+ File.separator+filename);
if(filename.endsWith(".jpg")||filename.endsWith(".pdf")
||filename.endsWith(".doc")||filename.endsWith(".txt")){
IOUtils.copy(item.getInputStream(),os);
os.flush();
os.close();
result.put(item.getFieldName(),"/upload/"+filename);}
else {
return;
}
}else{
result.put(item.getFieldName(), IOUtils.toString(item.getInputStream(),"utf-8")) ;
}
} EmailMessageBean messageBean=new EmailMessageBean();
messageBean.setShoujihao(result.get("shoujihao"));
messageBean.setZhaopinxinxi(result.get("yingpin"));
messageBean.setContent("招聘");
messageBean.setSubject("招聘");
String path=request.getSession().getServletContext().getRealPath(result.get("file"));
messageBean.setFujian(path);
boolean sendresult= EmailUtil.sendEmail(messageBean);
String url="/msg.jsp";
if(sendresult){
request.getSession().setAttribute("msgtitle","投递成功");
}else {
request.getSession().setAttribute("msgtitle","投递失败");
}
response.sendRedirect(url);
} catch (FileUploadException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}

}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doPost(request,response);
}
}

package javaemail.servlet;
import javaemail.bean.EmailMessageBean;
import javaemail.utils.EmailUtil;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
* Created by Administrator on 2016/11/10.
*/
public class ServletSimpleEmail extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String shoujihao=request.getParameter("shoujihao");
String neirong=request.getParameter("nerrong");
String lianxiren=request.getParameter("lianxiren");
String title=request.getParameter("title");
EmailMessageBean emailMessageBean=new EmailMessageBean();
emailMessageBean.setShoujihao(shoujihao);
emailMessageBean.setContent(neirong);
emailMessageBean.setSubject(title);
emailMessageBean.setZhaopinxinxi(lianxiren);
boolean result = EmailUtil.sendSimpleEmail(emailMessageBean);
String url="/msg.jsp";
if(result){
request.getSession().setAttribute("msgtitle","反馈成功");
}else {
request.getSession().setAttribute("msgtitle","反馈失败");
}
response.sendRedirect(url);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}

package javaemail.utils;

/**
* Created by Administrator on 2016/11/10.
*/

import javaemail.bean.EmailMessageBean;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.*;
import java.util.Properties;
import java.util.ResourceBundle;

/**
* Created by Administrator on 2016/11/10.
*/
public class EmailUtil {
private static final String USERNAME;
private static final String PASSWORD;
private static final String HOST;
private static final String TOADDRESS;
private static final String AUTH;
private static final String TRANSPORT;
private static Properties properties;
static {
properties=new Properties();
USERNAME= ResourceBundle.getBundle("emailpractice").getString("username");
PASSWORD= ResourceBundle.getBundle("emailpractice").getString("password");
HOST=ResourceBundle.getBundle("emailpractice").getString("mail.host");
TOADDRESS=ResourceBundle.getBundle("emailpractice").getString("toadress");
AUTH=ResourceBundle.getBundle("emailpractice").getString("mail.smtp.auth");
TRANSPORT=ResourceBundle.getBundle("emailpractice").getString("mail.transport.protocol");
properties.setProperty("mail.smtp.auth", AUTH);
properties.setProperty("mail.transport.protocol", TRANSPORT);
properties.setProperty("mail.host",HOST);
}
/*
* @param emailMessageBean
* @return
* @throws MessagingException
* @throws UnsupportedEncodingException
* 带附件的邮件发送  注意《的转义  和上传文件的过滤

4000
*/
public static boolean sendEmail(EmailMessageBean emailMessageBean) throws MessagingException, UnsupportedEncodingException {
Session session = Session.getInstance(properties,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USERNAME, PASSWORD);
}
});
session.setDebug(true);
Message message = new MimeMessage(session);
message.setSubject("应聘信息");
message.setFrom(new InternetAddress("\""+ MimeUtility.encodeText("应聘信息")+"\"<"+USERNAME+">"));
message.setRecipients(MimeMessage.RecipientType.TO, new Address[]{new InternetAddress(TOADDRESS)});
//邮件正文
MimeMultipart multipart = new MimeMultipart("mixed");
message.setContent(multipart);
/*
* 创建邮件的内容
* 包括一个邮件正文和一个附件
*/
MimeBodyPart content = new MimeBodyPart();      //邮件内容
MimeBodyPart attch1 = new MimeBodyPart();      //附件1
//将邮件内容添加到multipart中
multipart.addBodyPart(content);
multipart.addBodyPart(attch1);
//设置附件1
File file1= new File(emailMessageBean.getFujian());
DataSource ds1 = new FileDataSource(file1);
DataHandler dh1 = new DataHandler(ds1);
attch1.setDataHandler(dh1);
String filename = emailMessageBean.getFujian();
String ends = filename.substring(filename.length()-3, filename.length());
attch1.setFileName("jianli."+ends);
/*
* 设置内容(正文)---是一个复杂体
* 包括HTML正文
*/
MimeMultipart bodyMultipart = new MimeMultipart("related");
content.setContent(bodyMultipart);
//构造正文
MimeBodyPart htmlBody = new MimeBodyPart();
bodyMultipart.addBodyPart(htmlBody);
//设置HTML正文
htmlBody.setContent("<span style='color:red;font-size:16px'>求职信息</span><br><h4>职位:"
+emailMessageBean.getZhaopinxinxi()+"</h4><br>"
+"<h4>联系方式"+emailMessageBean.getShoujihao()+"</h4><br>" , "text/html;charset=UTF-8");
message.saveChanges(); //生成邮件
Transport.send(message);
return true;
}
/**
* 不带附件发送
* 邮件发送地址 服务器地址在配置文件可以配置
* @param emailMessageBean
* @return
*/
public static boolean sendSimpleEmail(EmailMessageBean emailMessageBean){
Session session = Session.getInstance(properties,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USERNAME, PASSWORD);
}
});
session.setDebug(true);
Message message = new MimeMessage(session);
try{
message.setSubject("反馈信息");
message.setFrom(new InternetAddress("\""+ MimeUtility.encodeText("反馈信息")+"\"<"+USERNAME+">"));
message.setRecipients(MimeMessage.RecipientType.TO, new Address[]{new InternetAddress(TOADDRESS)});
//邮件正文
MimeMultipart multipart = new MimeMultipart("mixed");
message.setContent(multipart);
MimeBodyPart content = new MimeBodyPart(); //邮件内容
multipart.addBodyPart(content);
MimeMultipart bodyMultipart = new MimeMultipart("related");
content.setContent(bodyMultipart);
//构造正文
MimeBodyPart htmlBody = new MimeBodyPart();
bodyMultipart.addBodyPart(htmlBody);
//设置HTML正文
htmlBody.setContent("<span style='color:red;font-size:16px'>反馈信息</span><br><h4>标题:"+emailMessageBean.getSubject()
+"</h4><br>"+"<h4>联系方式:"+emailMessageBean.getShoujihao()+"</h4><br>"+
"<h4>联系方式:"+emailMessageBean.getZhaopinxinxi()+"</h4><br>"+"<h4>反馈内容:"
+emailMessageBean.getContent()+"</h4><br>" , "text/html;charset=UTF-8");
message.saveChanges();//生成邮件
Transport.send(message);
}
catch (Exception e){
e.printStackTrace();
return false;
}
return true;
}
}

<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2016/11/10
Time: 16:32
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<%
String conturl=request.getContextPath();
%>
<link href="<%=conturl %>/static/bootstrap-3.3.5-dist/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" charset="utf-8" src="<%=conturl %>/static/bootstrap-3.3.5-dist/js/jquery.min.js"></script>
<html>
<head>
<title>留言</title>
</head>
<style type="text/css" >
.formmain{
width: 500px;
height: 600px;
margin-left: 500px;
margin-top: 100px;
}
</style>
<body>
<div class="formmain" style="width: 300px">
<form method="post" action="<%=conturl%>/sendsimpleEmail" id="sendemail">
<label >留言标题</label>
<input type="text" name="title"  id="title" class="form-control"/>
<div class="row">
<div class="col-xs-12">
<h3></h3>
</div>
</div>
<label >联系人</label>
<input type="text" name="lianxiren"  id="lianxiren" class="form-control"/>
<div class="row">
<div class="col-xs-12">
<h3></h3>
</div>
</div>
<label  >联系电话</label>
<input type="text" name="shoujihao" class="form-control" id="shoujihao">
<div class="row">
<div class="col-xs-12">
<h3></h3>
</div>
</div>
<label  >留言内容</label>
<textarea cols="5" class="form-control"  name="nerrong" id="neirong">
</textarea>
<div class="row">
<div class="col-xs-12">
<h3></h3>
</div>
</div>
<button class="btn btn-primary" type="button" onclick="sendemail();">留言</button>
</form>
</div>
</body>
</html>
<script type="text/javascript">
function sendemail(){
var $liuyan=$(document.getElementById("sendemail"));
if(cheched()){
$liuyan.submit();
}
}
function cheched() {
var $title=$(document.getElementById("title"));
var $shoujihao=$(document.getElementById("shoujihao"));
var $lianxiren=$(document.getElementById("lianxiren"));
var $neirong=$(document.getElementById("neirong"));
if($title.val()==""){
alert("标题不能为空");
return false;
}
var regexp= /^1[3|4|5|7|8][0-9]\d{8}$/ ;
if(!regexp.test($shoujihao.val())){
alert("手机号格式不正确");
return false;
}if($lianxiren.val()==""){
alert("联系人不能为空");
return false;
}
if($neirong.val()==""){
alert("内容不能为空");
return false;
}
return true;
}
</script>

<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2016/11/10
Time: 11:45
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<%
String conturl=request.getContextPath();
%>
<link href="<%=conturl %>/static/bootstrap-3.3.5-dist/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" charset="utf-8" src="<%=conturl %>/static/bootstrap-3.3.5-dist/js/jquery.min.js"></script>
<html>
<head>
<title>招聘</title>
</head>
<style type="text/css" >
.formmain{
width: 500px;
height: 600px;
margin-left: 500px;
margin-top: 100px;
}
</style>
<body>
<div class="formmain" style="width: 300px">
<form method="post" action="<%=conturl%>/sendEmail" enctype="multipart/form-data"  id="sendemail">
<label >应聘人员</label>
<input type="text" name="yingpin"  id="yingpin" class="form-control"/>
<div class="row">
<div class="col-xs-12">
<h3></h3>
</div>
</div>
<label >联系手机</label>
<input type="text" name="shoujihao"  id="shoujihao" class="form-control"/>
<div class="row">
<div class="col-xs-12">
<h3></h3>
</div>
</div>
<label  >用户简历</label>
<input type="file" name="file" class="form-control" id="jianli" onchange="getPhotoSize(this);"><span>请上传.jpg,.txt,.pdf,.doc文件</span>
<div class="row">
<div class="col-xs-12">
<h3></h3>
</div>
</div>
<button class="btn btn-primary" type="button" onclick="sendemails();">发送简历</button>
</form>
</div>
</body>
</html>
<script type="text/javascript">
function sendemails(){
var $yingpin=$(document.getElementById("sendemail"));
if(cheched()){
$yingpin.submit();
}
}
function cheched() {
var $yingpin=$(document.getElementById("yingpin"));
var $shoujihao=$(document.getElementById("shoujihao"));
var $jianli=$(document.getElementById("jianli"));
if($yingpin.val()==""){
alert("招聘信息不能为空");
return false;
}
var regexp= /^1[3|4|5|7|8][0-9]\d{8}$/ ;
if(!regexp.test($shoujihao.val())){
alert("手机号格式不正确");
return false;
}
if($shoujihao.val()==""){
alert("手机号格式不能为空");
return false;
}if($jianli.val()==""){
alert("请上传简历");
return false;
}
return true;
}
function getPhotoSize(obj){
photoExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();//获得文件后缀名
if(photoExt!='.jpg'&&photoExt!='.txt'&&photoExt!='.pdf'&&photoExt!='.doc'){
alert("请上传.jpg,.txt,.pdf,.doc文件!");
return false;
}
var fileSize = 0;
var isIE = /msie/i.test(navigator.userAgent) && !window.opera;
if (isIE && !obj.files) {
var filePath = obj.value;
var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
var file = fileSystem.GetFile (filePath);
fileSize = file.Size;
}else {
fileSize = obj.files[0].size;
}
fileSize=Math.round(fileSize/1024*100)/100; //单位为KB
if(fileSize>=1000){
alert("简历最大尺寸为1MB,请重新上传!");
return false;
}
return true;
}
</script>

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<servlet>
<servlet-name>sendEmailServlet</servlet-name>
<servlet-class>javaemail.servlet.SendEmailServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sendEmailServlet</servlet-name>
<url-pattern>/sendEmail</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>sendSimpleEmail</servlet-name>
<servlet-class>javaemail.servlet.ServletSimpleEmail</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sendSimpleEmail</servlet-name>
<url-pattern>/sendsimpleEmail</url-pattern>
</servlet-mapping>
</web-app>

配置文件

mail.smtp.auth=true
mail.transport.protocol=smtp
mail.host=smtp.163.com
username=**********@163.com
password =************
toadress=@qq.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: