前台:
<divclass="rightcon bgwhite">
<input type="text"name="bae017" id="bae017" />
<button class="btnbtn-success" οnclick="sendMsg();">获取手机验证码</button>
<input type="text"name="aae159" id="aae159"/>
<button class="btnbtn-success" οnclick="sendMail();">获取邮箱验证码</button>
</div>
前台JS:
<scripttype="text/javascript">
function sendMail(){
var aae159 =$("#aae159").val();
if(aae159!=""){
$.ajax({
type:"POST",
url:"${ctxPath}/system/cms/order/sendMail",
data:{aae159:$("#aae159").val()},
async:false,
success: function(data){
data= eval("("+data+")");
if(data.success== "1"){
alert("验证码发送成功!")
}else{
alert("验证码发送失败!");
}
}
});
}else{
alert("请输入邮箱地址,再点此按钮!");
}
}
//获取短信 验证码
function sendMsg(){
var bae017 =$("#bae017").val();
if(bae017!=""){
$.ajax({
type:"POST",
url:"${ctxPath}/system/cms/order/sendMsg",
data:{bae017:$("#bae017").val()},
async:false,
success: function(data){
data= eval("("+data+")");
if(data.success== "1"){
alert("验证码发送成功!")
}else{
alert("验证码发送失败!");
}
}
});
}else{
alert("请输入电话号码,再点此按钮!");
}
}
</script>
Controller:
/**
* 发送邮箱绑定验证码
* @return
*/
@RequestMapping("/sendMail")
@ResponseBody
public String sendmail(TcmsMailform,ModelMap model,HttpServletResponse resp){
//生成6位随机数作为验证码
Random rd = new Random();
int num = rd.nextInt(1000000);
while(num < 100000){
num = rd.nextInt(1000000);
}
String pwd = String.valueOf(num);
if(StringUtils.isNotBlank(form.getAae159())&&StringUtils.isNotBlank(pwd)){
//发邮件
try {
MailUtil.send_mail(form.getAae159(),"邮箱验证"+"您于"+ DateUtil.now()+"进行邮箱绑定操作"+"验证码为"+pwd+",请输入验证码,完成邮箱绑定");
} catch (MessagingExceptione) {
e.printStackTrace();
}
return"{success:1}";
}
return "{success:-1}";
}
/**
*Description 发送手机绑定验证码
* @paramform
* @parammodel
* @paramresp
*@return
*/
@ResponseBody
@RequestMapping("/sendMsg")
public String sendmsg(TcmsMail form,ModelMapmodel,HttpServletResponse resp){
//生成6位随机数作为验证码
Random rd = new Random();
int num = rd.nextInt(1000000);
while(num < 100000){
num = rd.nextInt(1000000);
}
String pwd = String.valueOf(num);
String bae017 = form.getBae017();
if(StringUtils.isNotBlank(bae017)&&StringUtils.isNotBlank(pwd)){
String msg = "手机验证"+"您于"+DateUtil.now()+"进行手机绑定操作"+"验证码为"+pwd+",请输入验证码,完成手机绑定";
// 发短信
SmsService.sendMessage(bae017,"a", msg);
return "{success:1}";
}
return"{success:-1}";
}
邮箱接口(MailUtil )
packagecom.neusoft.module.web.cms.service;
importjavax.mail.*;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeMessage;
importjava.util.Properties;
/**
* 邮件工具类
*/
publicclass MailUtil {
/**
* 发送邮件
* @param to 给谁发
* @param text 发送内容
*/
public static void send_mail(Stringto,String text) throws MessagingException {
//创建连接对象 连接到邮件服务器
Properties properties = newProperties();
//设置发送邮件的基本参数
//发送邮件服务器
properties.put("mail.smtp.host", "smtp.163.com");
//发送端口
properties.put("mail.smtp.port","25");
properties.put("mail.smtp.auth", "true");
//设置发送邮件的账号和密码
Session session =Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthenticationgetPasswordAuthentication() {
//两个参数分别是发送邮件的账户和密码
return newPasswordAuthentication("1308413****@163.com","*********");
}
});
//创建邮件对象
Message message = newMimeMessage(session);
//设置发件人
message.setFrom(newInternetAddress("大连****"));
//设置收件人
message.setRecipient(Message.RecipientType.TO,new InternetAddress(to));
//设置主题
message.setSubject("这是一份测试邮件");
//设置邮件正文 第二个参数是邮件发送的类型
message.setContent(text,"text/html;charset=UTF-8");
//发送一封邮件
Transport.send(message);
}
}
service(短信)
package com.neusoft.module.web.cms.service;
public interface SmsService extends Service {
void sendMessage(String busicode, String smsMob, String smsText);
void sendMessage(String busicode, String smsMob, String smsText, boolean log);
}
serviceImpl(短信)
package com.neusoft.module.web.cms.service.impl;
import java.util.Properties;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.springframework.stereotype.Service;
import com.neusoft.module.web.cms.service.SmsService;
@SuppressWarnings({"deprecation"})
@Service
public class SmsServiceImpl implements SmsService {
private String config = "/application.properties";
public void sendMessage(String busicode, String smsMob, String smsText) {
this.sendMessage(busicode, smsMob, smsText, true);
}
public void sendMessage(String busicode, String smsMob, String smsText, boolean log) {
try {
HttpClient client = new HttpClient();
final Properties properties = new Properties();
properties.load(getClass().getResourceAsStream(config));
PostMethod post = new PostMethod(String.valueOf(properties.get("sms_remote_url")));
post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");//在头文件中设置转码
NameValuePair[] data ={ new NameValuePair("Uid", String.valueOf(properties.get("sms_user_name"))),new NameValuePair("Key", String.valueOf(properties.get("sms_user_mask"))),new NameValuePair("smsMob",busicode),new NameValuePair("smsText",smsText)};
post.setRequestBody(data);
client.executeMethod(post);
Header[] headers = post.getResponseHeaders();
int statusCode = post.getStatusCode();
System.out.println("statusCode:"+statusCode);
for(Header h : headers)
{
System.out.println(h.toString());
}
String result = new String(post.getResponseBodyAsString().getBytes("utf-8"));
System.out.println(result); //打印返回消息状态
post.releaseConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
}
application.properties
#使用sms发送短信:注意字符,GBK
sms_remote_url=http://utf8.api.smschinese.cn/
sms_user_name=*****
sms_user_mask=************
关于sms----http://sms.webchinese.com.cn/api.shtml
注册,得到用户名,短信密钥
有免费的5条短信测试。
第二种发邮件方法:使用spring boot
controller:
/**
* 发送邮箱绑定验证码
* @return
*/
@RequestMapping("/sendMail")
@ResponseBody
public String sendmail(TcmsMail form,ModelMap model,HttpServletResponse resp){
//生成6位随机数作为验证码
Random rd = new Random();
int num = rd.nextInt(1000000);
while(num < 100000){
num = rd.nextInt(1000000);
}
String pwd = String.valueOf(num);
if(StringUtils.isNotBlank(form.getAae159())&&StringUtils.isNotBlank(pwd)){
mailService.sendSimpleMail(form.getAae159(), "主题:简单邮件", "测试邮件内容");
}
return "{success:-1}";
}
MailService
package com.neusoft.module.web.cms.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.InputStreamSource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
@Service
public class MailService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final JavaMailSender sender;
@Value("${spring.mail.username}")
private String from;
public MailService(JavaMailSender sender) {
this.sender = sender;
}
/**
* 发送纯文本的简单邮件
*/
public void sendSimpleMail(String to, String subject, String content){
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(content);
try {
sender.send(message);
logger.info("简单邮件已经发送。");
} catch (Exception e) {
logger.error("发送简单邮件时发生异常!", e);
}
}
/**
* 利用helper设置各种邮件发送相关的信息
*/
private MimeMessageHelper setInfoByHelper(String to, String subject, String content, MimeMessage message)
throws MessagingException {
//true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
return helper;
}
/**
* 发送html格式的邮件
*/
public void sendHtmlMail(String to, String subject, String content){
MimeMessage message = sender.createMimeMessage();
try {
MimeMessageHelper helper = setInfoByHelper(to, subject, content, message);
sender.send(message);
logger.info("html邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送html邮件时发生异常!", e);
}
}
/**
* 发送带附件的邮件
*/
public void sendAttachmentsMail(String to, String subject, String content, String filePath){
MimeMessage message = sender.createMimeMessage();
try {
MimeMessageHelper helper = setInfoByHelper(to, subject, content, message);
FileSystemResource file = new FileSystemResource(new File(filePath));
String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
helper.addAttachment(fileName, file);
sender.send(message);
logger.info("带附件的邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送带附件的邮件时发生异常!", e);
}
}
/**
* 发送带附件的邮件
* @param to 收件人列表
* @param subject 邮件标题
* @param content 邮件内容
* @param file 附件File对象
*/
public void sendAttachmentsMail(String to, String subject, String content, File file){
MimeMessage message = sender.createMimeMessage();
try {
MimeMessageHelper helper = setInfoByHelper(to, subject, content, message);
helper.addAttachment(file.getName(), file);
sender.send(message);
logger.debug("带附件的邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送带附件的邮件时发生异常!", e);
}
}
/**
* 发送带附件的邮件
* @param to 收件人列表
* @param subject 邮件标题
* @param content 邮件内容
* @param inputStreamSource 附件streamSource,可以这样获得:new ByteArrayResource(ByteArrayOutputStream.toByteArray());
* @param fileName 附件的文件名
*/
public void sendAttachmentsMail(String to, String subject, String content, InputStreamSource inputStreamSource, String fileName){
MimeMessage message = sender.createMimeMessage();
try {
MimeMessageHelper helper = setInfoByHelper(to, subject, content, message);
helper.addAttachment(fileName, inputStreamSource);
sender.send(message);
logger.debug("带附件的邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送带附件的邮件时发生异常!", e);
}
}
/**
* 发送嵌入静态资源(一般是图片)的邮件
* @param content 邮件内容,需要包括一个静态资源的id,比如:<img src=\"cid:rscId01\" >
* @param rscPath 静态资源路径和文件名
* @param rscId 静态资源id
*/
public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){
MimeMessage message = sender.createMimeMessage();
try {
MimeMessageHelper helper = setInfoByHelper(to, subject, content, message);
FileSystemResource res = new FileSystemResource(new File(rscPath));
helper.addInline(rscId, res);
sender.send(message);
logger.info("嵌入静态资源的邮件已经发送。");
} catch (MessagingException e) {
logger.error("发送嵌入静态资源的邮件时发生异常!", e);
}
}
}
application.properties
#发邮件
spring.mail.host=smtp.163.com
spring.mail.username=1308413***@163.com
spring.mail.password=******
spring.mail.port=25
spring.mail.default-encoding=UTF-8
spring.mail.smtp.auth=true
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>