使用javamail实现邮件发送功能完整代码
2015-12-21 17:19
906 查看
最近项目中要用到发邮件的功能, 在网上找了好多代码,看着别人发布的代码整理出来的东西,这个代码已经测试过,包括样式什么的,都是直接拿过去就能用的
实体类:
public class MailInfo {
private int id;
private String toAddress;
private String subject;
private String content;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
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;
}
}
applicationContext中要添加的配置:
<!-- 发送邮件配置 -->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.wo.cn"/>
<property name="port" value="25"/>
<property name="username" value="你的邮箱" />
<property name="password" value="你邮箱的密码"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.EnableSSL.enable">true</prop>
</props>
</property>
</bean>
<!-- 配置线程池 -->
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5"/>
<property name="maxPoolSize" value="10"/>
<property name="queueCapacity" value="25"/>
</bean>
发送邮件的工具类:
public class MailSender {
//读取配置文件
private static PropertiesLoader loader = new Properti
4000
esLoader("bdsc-web.properties");
private TaskExecutor taskExecutor = (TaskExecutor) new ClassPathXmlApplicationContext("classpath:applicationContext.xml").getBean("taskExecutor");
private JavaMailSender javaMailSender = (JavaMailSender) new ClassPathXmlApplicationContext("classpath:applicationContext.xml").getBean("javaMailSender") ;
public void sendMail(String toAddress, String subject, String content){
taskExecutor.execute(new sendMailThread(toAddress, subject, content));
}
/*内部线程类,使用线程发送邮件*/
private class sendMailThread implements Runnable{
private String toAddress;
private String subject;
private String content;
private sendMailThread(String toAddress, String subject, String content){
this.toAddress = toAddress;
this.subject = subject;
this.content = content;
}
@Override
public void run() {
mailSimple(toAddress, subject, content);
}
}
private void mailSimple(String toAddress, String subject, String content){
//建立邮件消息
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
//可发送附件
helper = new MimeMessageHelper(mimeMessage,true,"UTF-8");
} catch (MessagingException e) {
e.printStackTrace();
}
//设定mail server
try {
helper.setTo(toAddress);
helper.setFrom(loader.getProperty("mail.smtp.username"));
helper.setSubject(subject);
helper.setText(content,true);
} catch (MessagingException e) {
e.printStackTrace();
}
javaMailSender.send(mimeMessage);
System.out.println("发送成功");
}
}
service层:
public boolean sendMail(String toAddress, String subject, String content){
MailSender sender = new MailSender();
try {
sender.sendMail(toAddress, subject, content);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
controller:
@RequestMapping(value="sendMail")
public @ResponseBody boolean sendMail(MailInfo info){
boolean result = mailservice.sendMail(info.getToAddress(),info.getSubject(),info.getToAddress());
return result;
}
页面:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>发送邮件</title>
<link href="style/bootstrap.css" rel="stylesheet" />
<link href="style/sendMail.css" rel="stylesheet" />
<script src="js/jquery-1.10.2.js"></script>
<script src="js/sendMail.js"></script>
</head>
<body>
<div class="container send-container">
<div class="control-group content-group">
<span class="prompt-font">收件人</span>
<input placeholder="请输入收件人" type="text" class="inputbox" name="toAddress" />
</div>
<div class="control-group content-group">
<span class="prompt-font">主题</span>
<input placeholder="请输入主题" type="text" class="inputbox" name="subject" />
</div>
<div class="control-group content-group">
<span class="prompt-font">内容</span>
<textarea placeholder="请输内容" class="mail-content" name="content"></textarea>
</div>
<div class="send-button">
<p class="send">发送</p>
</div>
<div class="message">
<p></p>
<span class="cancle">×</span>
</div>
</div>
</body>
样式:
body {
margin:0;
padding:0;
}
.send-container {
margin-top:50px;
}
.send-container .content-group {
margin-bottom:15px;
}
.send-container .content-group .prompt-font {
display:block;
margin-bottom:3px;
color:#0066FF;
font-weight:bold;
font-family:'Microsoft YaHei';
}
.send-container .content-group .inputbox {
outline:none;
width:100%;
height:35px;
padding:0 10px;
border-radius:9px;
border:1px solid #cccccc;
color:#999;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: border linear .2s, box-shadow linear .2s;
-moz-transition: border linear .2s, box-shadow linear .2s;
-o-transition: border linear .2s, box-shadow linear .2s;
transition: border linear .2s, box-shadow linear .2s;
}
.send-container .content-group .mail-content {
width:100%;
border-radius:9px;
border:1px solid #cccccc;
color:#999;
resize:none;
outline:none;
padding:7px 10px 0 10px;
height:330px;
}
.send-container .send-button {
float:right;
}
.send-container .send-button .send {
width:70px;
height:30px;
background-color:#0099ff;
text-align:center;
line-height:30px;
color:#fff;
font-size:12px;
border-radius:4px;
cursor:pointer;
}
.send-container .message {
position:absolute;
width:80px;
height:40px;
background-color:#fff;
box-shadow:rgba(0,0,0,0.04) 2px 1px 0;
border:1px solid #eee;
top:-40px;
left:600px;
}
.send-container .message p {
text-align:center;
color:#999;
font-size:12px;
line-height:40px;
margin:0;
padding:0;
color:#0094ff;
}
.send-container .message .cancle {
position:relative;
display:inline-block;
line-height:15px;
border-radius:100%;
top:-49px;
left:70px;
color:#eb2d2d;
font-weight:bold;
font-size:22px;
cursor:pointer;
width:15px;
height:15px;
background-color:#fff;
border-radius:100%;
}
js代码:
/// <reference path="jquery-1.10.2.js" />
$(document).ready(function () {
init();
});
function init() {
send();
messageHide();
}
function send() {
$(".send-container .send-button .send").on("click", function () {
var toAddress = $("input[name='toAddress']").val();
var subject = $("input[name='subject']").val();
var content = $("textarea[name='content']").val();
var info="toAddress="+toAddress+"&subject="+subject+"&content="+content;
$.ajax({
url:'sendMail',
type:'POST',
dataType:'JSON',
data:info,
success:function(data){
if(data){
$(".send-container .message p").html("发送成功");
$(".send-container .message").animate({top:"45px"},"1500");
$("input[name='toAddress']").val("");
$("input[name='subject']").val("");
$("textarea[name='content']").val("");
}else{
$(".send-container .message p").html("发送失败");
$(".send-container .message").animate({top:"45px"},"1500");
$("input[name='toAddress']").val("");
$("input[name='subject']").val("");
$("textarea[name='content']").val("");
}
}
});
});
}
function messageHide() {
$(".send-container .message .cancle").on("click", function () {
$(".send-container .message").animate({ top: "-40px" }, "1500");
$("input[name='toAddress']").val("");
$("input[name='subject']").val("");
$("textarea[name='content']").val("");
});
}
实体类:
public class MailInfo {
private int id;
private String toAddress;
private String subject;
private String content;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
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;
}
}
applicationContext中要添加的配置:
<!-- 发送邮件配置 -->
<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.wo.cn"/>
<property name="port" value="25"/>
<property name="username" value="你的邮箱" />
<property name="password" value="你邮箱的密码"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.EnableSSL.enable">true</prop>
</props>
</property>
</bean>
<!-- 配置线程池 -->
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5"/>
<property name="maxPoolSize" value="10"/>
<property name="queueCapacity" value="25"/>
</bean>
发送邮件的工具类:
public class MailSender {
//读取配置文件
private static PropertiesLoader loader = new Properti
4000
esLoader("bdsc-web.properties");
private TaskExecutor taskExecutor = (TaskExecutor) new ClassPathXmlApplicationContext("classpath:applicationContext.xml").getBean("taskExecutor");
private JavaMailSender javaMailSender = (JavaMailSender) new ClassPathXmlApplicationContext("classpath:applicationContext.xml").getBean("javaMailSender") ;
public void sendMail(String toAddress, String subject, String content){
taskExecutor.execute(new sendMailThread(toAddress, subject, content));
}
/*内部线程类,使用线程发送邮件*/
private class sendMailThread implements Runnable{
private String toAddress;
private String subject;
private String content;
private sendMailThread(String toAddress, String subject, String content){
this.toAddress = toAddress;
this.subject = subject;
this.content = content;
}
@Override
public void run() {
mailSimple(toAddress, subject, content);
}
}
private void mailSimple(String toAddress, String subject, String content){
//建立邮件消息
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
//可发送附件
helper = new MimeMessageHelper(mimeMessage,true,"UTF-8");
} catch (MessagingException e) {
e.printStackTrace();
}
//设定mail server
try {
helper.setTo(toAddress);
helper.setFrom(loader.getProperty("mail.smtp.username"));
helper.setSubject(subject);
helper.setText(content,true);
} catch (MessagingException e) {
e.printStackTrace();
}
javaMailSender.send(mimeMessage);
System.out.println("发送成功");
}
}
service层:
public boolean sendMail(String toAddress, String subject, String content){
MailSender sender = new MailSender();
try {
sender.sendMail(toAddress, subject, content);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
controller:
@RequestMapping(value="sendMail")
public @ResponseBody boolean sendMail(MailInfo info){
boolean result = mailservice.sendMail(info.getToAddress(),info.getSubject(),info.getToAddress());
return result;
}
页面:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>发送邮件</title>
<link href="style/bootstrap.css" rel="stylesheet" />
<link href="style/sendMail.css" rel="stylesheet" />
<script src="js/jquery-1.10.2.js"></script>
<script src="js/sendMail.js"></script>
</head>
<body>
<div class="container send-container">
<div class="control-group content-group">
<span class="prompt-font">收件人</span>
<input placeholder="请输入收件人" type="text" class="inputbox" name="toAddress" />
</div>
<div class="control-group content-group">
<span class="prompt-font">主题</span>
<input placeholder="请输入主题" type="text" class="inputbox" name="subject" />
</div>
<div class="control-group content-group">
<span class="prompt-font">内容</span>
<textarea placeholder="请输内容" class="mail-content" name="content"></textarea>
</div>
<div class="send-button">
<p class="send">发送</p>
</div>
<div class="message">
<p></p>
<span class="cancle">×</span>
</div>
</div>
</body>
样式:
body {
margin:0;
padding:0;
}
.send-container {
margin-top:50px;
}
.send-container .content-group {
margin-bottom:15px;
}
.send-container .content-group .prompt-font {
display:block;
margin-bottom:3px;
color:#0066FF;
font-weight:bold;
font-family:'Microsoft YaHei';
}
.send-container .content-group .inputbox {
outline:none;
width:100%;
height:35px;
padding:0 10px;
border-radius:9px;
border:1px solid #cccccc;
color:#999;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: border linear .2s, box-shadow linear .2s;
-moz-transition: border linear .2s, box-shadow linear .2s;
-o-transition: border linear .2s, box-shadow linear .2s;
transition: border linear .2s, box-shadow linear .2s;
}
.send-container .content-group .mail-content {
width:100%;
border-radius:9px;
border:1px solid #cccccc;
color:#999;
resize:none;
outline:none;
padding:7px 10px 0 10px;
height:330px;
}
.send-container .send-button {
float:right;
}
.send-container .send-button .send {
width:70px;
height:30px;
background-color:#0099ff;
text-align:center;
line-height:30px;
color:#fff;
font-size:12px;
border-radius:4px;
cursor:pointer;
}
.send-container .message {
position:absolute;
width:80px;
height:40px;
background-color:#fff;
box-shadow:rgba(0,0,0,0.04) 2px 1px 0;
border:1px solid #eee;
top:-40px;
left:600px;
}
.send-container .message p {
text-align:center;
color:#999;
font-size:12px;
line-height:40px;
margin:0;
padding:0;
color:#0094ff;
}
.send-container .message .cancle {
position:relative;
display:inline-block;
line-height:15px;
border-radius:100%;
top:-49px;
left:70px;
color:#eb2d2d;
font-weight:bold;
font-size:22px;
cursor:pointer;
width:15px;
height:15px;
background-color:#fff;
border-radius:100%;
}
js代码:
/// <reference path="jquery-1.10.2.js" />
$(document).ready(function () {
init();
});
function init() {
send();
messageHide();
}
function send() {
$(".send-container .send-button .send").on("click", function () {
var toAddress = $("input[name='toAddress']").val();
var subject = $("input[name='subject']").val();
var content = $("textarea[name='content']").val();
var info="toAddress="+toAddress+"&subject="+subject+"&content="+content;
$.ajax({
url:'sendMail',
type:'POST',
dataType:'JSON',
data:info,
success:function(data){
if(data){
$(".send-container .message p").html("发送成功");
$(".send-container .message").animate({top:"45px"},"1500");
$("input[name='toAddress']").val("");
$("input[name='subject']").val("");
$("textarea[name='content']").val("");
}else{
$(".send-container .message p").html("发送失败");
$(".send-container .message").animate({top:"45px"},"1500");
$("input[name='toAddress']").val("");
$("input[name='subject']").val("");
$("textarea[name='content']").val("");
}
}
});
});
}
function messageHide() {
$(".send-container .message .cancle").on("click", function () {
$(".send-container .message").animate({ top: "-40px" }, "1500");
$("input[name='toAddress']").val("");
$("input[name='subject']").val("");
$("textarea[name='content']").val("");
});
}
相关文章推荐
- eclipse连接mysql ping失败
- 给jdk写注释系列之jdk1.6容器(6)-HashSet源码解析&Map迭代器
- C# VS JAVA 差异 (未完待续)
- Java线程: 线程调度
- 深入Spring IOC源码之ResourceLoader
- java学习笔记-equals
- Java 泛型类型的一些限制
- java设计模式----观察者模式
- Java入门学习(2)多态的理解
- JDK7和JDK8中HashMap的结构优化
- 菜鸟猿大战Java之集合框架系列(三)
- Java中用反射的方式获取类中的所有属性和方法,以及获取属性的默认值,设置属性的默认值
- Myeclipse10下搭建SSH框架(图解)Struts2.1+Spring3.0+Hibernate3.3
- java-汉字转化拼音(纯java)
- HQL语句中的表名是javabean的类名
- java-汉字转换拼音-pinyin4j.jar
- Java基础--工具类(Collections、Arrays)及其他常用类
- Java的内存泄漏
- java 数据库连接池
- java工具类二