发送邮件
一、 设置发送方的Email的授权码。(设置方式如下图)
163邮箱为例
二、引入一个jar包
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
三、编写一个工具类
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
/**
*
* @ClassName: MailUtils
* @Description: 发送邮件辅助类
* @date 2017年12月12日 下午4:17:25
* Company www.igeekhome.com
*
*/
public class MailUtils {
/**
*
* @Title: sendMail
* @Description: 实现发送邮件
* @param email:接收邮件的地址
* @param emailMsg:发送邮件的内容
* @throws AddressException
* @throws MessagingException
*/
public static void sendMail(String email, String emailMsg)
throws AddressException, MessagingException {
// 1.创建一个程序与邮件服务器会话对象 Session
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "SMTP");
props.setProperty("mail.host", "smtp.163.com");//邮箱类型
props.setProperty("mail.smtp.auth", "true");// 指定验证为true
// 创建验证器
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
//第一个参数是发送的邮件用户名,第二个参数是授权码
return new PasswordAuthentication("18912480392@163.com", "wangbo1010");//授权码
}
};
Session session = Session.getInstance(props, auth);
// 2.创建一个Message,它相当于是邮件内容
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("18912480392@163.com")); // 设置发送者
message.setRecipient(RecipientType.TO, new InternetAddress(email)); // 设置发送方式与接收者
message.setSubject("用户激活");
// message.setText("这是一封激活邮件,请<a href='#'>点击</a>");
message.setContent(emailMsg, "text/html;charset=utf-8");
// 3.创建 Transport用于将邮件发送
Transport.send(message);
}
}
四、 编写发送邮件的方法接口
package com.sm.controller;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.sm.model.User;
import com.sm.service.UserService;
import com.sm.util.MailUtils;
import com.sm.util.Msg;
@Controller
public class RegisterController {
@Autowired
private UserService userService;
@RequestMapping("/Register")
@ResponseBody
public Msg Register(String email) {//参数是接收的邮件
User user = new User();
String name = "王波";
user.setUserName(name);
int i = userService.insertSelective(user);
if(i == 1) {
//发送的邮件内容(此为激活功能。)
String emailMsg = "恭喜您,"+name
+",注册成功!请点击下面的激活码进行账户激活。<a href=\"http://localhost:8088/Email/active?name="
+name+"\">激活会员</a>";
try {
MailUtils.sendMail(email, emailMsg);//调用发送邮件工具类
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return Msg.success().add("msg", "发送成功");
}else {
return Msg.fail().add("msg", "发送失败");
}
}
}