java发送邮件,分为使用外网和不能使用外网的两种情况,在不能使用外网的情况下,可以搭建本地邮件服务器.对这两种情况分别写了demo,针对不同环境下使用.
/**
* 邮件发送工具类
*/
public class MailUtils {
/**
* 本地邮件发送
* @param email 收件人地址
* @param emailMsg 发送内容
* @throws AddressException 地址异常
* @throws MessagingException 邮件消息异常
*/
public static void sendEmail(String email, String emailMsg)
throws AddressException, MessagingException {
// 1.创建一个程序与邮件服务器会话对象 Session
Properties props = new Properties();
//设置发送的协议
props.setProperty("mail.transport.protocol", "SMTP");
//设置发送邮件的服务器
props.setProperty("mail.host", "127.0.0.1");
props.setProperty("mail.smtp.auth", "true");
// 创建验证器
Authenticator auth = new Authenticator(){
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 设置发送人的账号和密码
return new PasswordAuthentication("admin","123");
}
};
Session session = Session.getInstance(props,auth);
// 2.创建一个Message,它相当于是邮件内容
Message message = new MimeMessage(session);
//设置发送者
message.setFrom(new InternetAddress("admin@maibenben.com"));
//设置发送方式与接收者
message.setRecipient(RecipientType.TO, new InternetAddress(email));
//设置邮件主题
message.setSubject("用户激活!");
//设置邮件内容
message.setContent(emailMsg,"text/html;charset=UTF-8");
// 3.创建 Transport用于将邮件发送
Transport.send(message);
}
/**
* 本地邮件发送
* @param to 邮件地址
* @param code 激活码
*/
public static void sendEmail2(String to,String code){
//1.创建一个程序与邮箱服务器对话session对象
Properties props = new Properties();
//设置发送邮件的服务器
props.setProperty("smtp.host", "localhost");
//创建session,创建验证器
Session session = Session.getInstance(props,new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 设置发送人的账号和密码
return new PasswordAuthentication("admin","123");
}
});
//2.创建Message对象,相当于邮件内容
Message message = new MimeMessage(session);
//设置发件人
try {
message.setFrom(new InternetAddress("admin@maibenben.com"));
//设置发送方式与收件人
message.addRecipient(RecipientType.TO,new InternetAddress(to));
//设置邮件主题
message.setSubject("来自商城的激活邮件!");
//设置内容
String url = "http://127.0.0.1:8080/store/UserServlet?method=active&code="+code;
message.setContent("<h1>来自商城的邮件,激活请点击以下链接!</h1><h3><a href='"+url+"'>"+url+"</a></h3>","text/html;charset=UTF-8");
//3.创建Transport对象,发送邮件
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
/**
* 外网邮件发送
* @param email 邮件地址
* @param code 激活码
*/
public static void sendEmail3(String to, String code) {
//1.创建与邮箱服务器对话的Session对象
Properties props = new Properties();
//设置发送邮件的服务器
props.setProperty("mail.host", "smtp.163.com");
props.setProperty("mail.stmp.auth", "true");//指定验证为true
Session session = Session.getInstance(props,new Authenticator(){
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//设置发件人的账号和密码
return new PasswordAuthentication("shu","1234shua");
}
});
//2.创建Message对象,它是邮件的内容
Message message = new MimeMessage(session);
//设置发件人
try {
//设置发件人地址
message.setFrom(new InternetAddress("shu@163.com"));
//设置发送方式和收件人
message.addRecipient(RecipientType.TO,new InternetAddress("hai@126.com"));
//设置主题
message.setSubject("来自商城的激活邮件");
//设置内容,也可直接把内容写入code中
String url = "http://localhost:8080/store/UserServlet?method=active&code="+code;
message.setContent("<h1>来自商城的激活邮件!激活请点击以下链接!</h1><h3><a href='"+url+"' >"+url+"</a></h3>","text/html;charset=UTF-8");
//3.创建Transport对象,用于发送邮件
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}