工具类
package com.arvato.tools;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;
public class EmailUtil {
//测试(OK)
/* public static void main(String[] args){
try {
sendEmail("13064845825@163.com", "好啊", "ssssssss");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}*/
public static void sendEmail(String toEmailAddress,String emailTitle,String emailContent)throws Exception{
Properties props = new Properties();
// 开启debug调试
props.setProperty("mail.debug", "true");
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
// 设置邮件服务器主机名
props.setProperty("mail.host", "smtp.qq.com");
// 发送邮件协议名称
props.setProperty("mail.transport.protocol", "smtp");
/**SSL认证,注意腾讯邮箱是基于SSL加密的,所有需要开启才可以使用**/
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
//创建会话
Session session = Session.getInstance(props);
//发送的消息,基于观察者模式进行设计的
Message msg = new MimeMessage(session);
msg.setSubject(emailTitle);
//使用StringBuilder,因为StringBuilder加载速度会比String快,而且线程安全性也不错
StringBuilder builder = new StringBuilder();
builder.append("\n"+emailContent);
builder.append("\n时间 " + new Date());
msg.setText(builder.toString());
msg.setFrom(new InternetAddress("970742915@qq.com"));
Transport transport = session.getTransport();
transport.connect("smtp.qq.com", "970742915@qq.com", "********");
//发送消息
transport.sendMessage(msg, new Address[] { new InternetAddress(toEmailAddress) });
transport.close();
}
}
Controller中代码
@Controller
public class SendEmailAction {
/**
* 发送邮件
* @return
* @throws Exception
*/
@RequestMapping(value="/sendEmail.json" , method=RequestMethod.POST,produces="application/json;charset=UTF-8")
@ResponseBody
public Object sendEmail(HttpServletRequest request)throws Exception, ClassNotFoundException {
Map<String,String> map = new HashMap<String,String>();
String msg = "ok"; //发送状态
String toEMAIL = "13064845825@163.com"; //对方邮箱
String TITLE = "成绩单"; //标题
String CONTENT ="你这次的考试成绩很棒"; //内容
EmailUtil.sendEmail(toEMAIL, TITLE, CONTENT);
map.put("result", msg);
return map;
}
}
js如下
function goSendEmail(){
parent.layer.confirm('您确定要发送邮件吗?', {
btn: ['确定','取消'], //按钮
shade: false //不显示遮罩
}, function(){
$.ajax({
type: "POST",
title: '推送邮箱',
url: ctx+ '/sendEmail.json?',
data: {CONTENT:CONTENT,TITLE:TITLE,CONTENT:CONTENT},
dataType:'json',
//beforeSend: validateData,
cache: false,
success: function(data){
if("ok" == data.result){
$("#msg").tips({
side:3,
msg:'发送成功!',
bg:'#68B500',
time:5
});
}else{
$("#msg").tips({
side:3,
msg:'发送失败!',
bg:'#68B500',
time:5
});
}
}
});
}, function(){
parent.layer.msg("已取消", {icon: 1});
return false;
});
}
前台代码段
<button class="btn btn-success btn-primary" onclick="goSendEmail()">
<i class="fa fa-envelope-o"></i> 电子邮箱推送
</button>
现在前台无法访问到后台数据
请问我这个问题出在哪?前后台交互这段不懂,求大神答疑,谢谢!
这个工具类没有问题已测试,可以正常发送的