配置文件:
package com.nroad.config;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;
/**
* Created by Administrator on 2017/5/19.
*/
@Component
public class EmailConfig {
private static Log log = LogFactory.getLog(EmailConfig.class);
private static Configuration configs;
private static String host; //主机地址,不同服务商的地址不一样,可以百度
private static String proptocol; //协议,此处使用smtp协议
private static String port; //端口,不同服务商不一样,可以百度
private static String email; //发送邮箱账号
private static String password; //发送邮箱密码
static {
EmailConfig.init("emailinfo.properties");
}
private EmailConfig() {
}
public static synchronized void init(String filePath){
if(configs == null){
try {
configs = new PropertiesConfiguration(filePath);
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
if (configs == null){
throw new IllegalStateException("can`t find file by path:" + filePath);
} else {
host = configs.getString("host");
proptocol = configs.getString("proptocol");
port = configs.getString("port");
email = configs.getString("email");
password = configs.getString("password");
log.info("发送邮件配置如下: ");
log.info("配置文件名: "+filePath);
log.info(description());
}
}
private static String description() {
StringBuilder sb =new StringBuilder("Configs:{");
sb.append("主机: ").append(host).append("\n");
sb.append("邮箱协议: ").append(proptocol).append("\n");
sb.append("发送方邮箱: ").append(email).append("\n");
sb.append("发送方密码: ").append("保密").append("\n");
sb.append("}");
return sb.toString();
}
//get and set...
}
编辑邮件参数以及内容
redirect_uri : 服务器域名以及端口
validateCode:因为我做的是邮箱验证,所以这个是验证码,不用在乎
email:接收方邮箱
/**
* 向用户邮箱发送激活码
*/
public void sendEmail(String redirect_uri, String email, String validateCode){
//邮件的内容
StringBuffer sb = new StringBuffer("点击下面链接激活账号,48小时生效,否则重新注册账号,链接只能使用一次,请尽快激活!</br>");
sb.append("<a href=\""+redirect_uri+"?action=activate&email=");
sb.append(email);
sb.append("&validateCode=");
sb.append(validateCode);
sb.append("\">"+redirect_uri+"?action=activate&email=");
sb.append(email);
sb.append("&validateCode=");
sb.append(validateCode);
sb.append("</a>");
//发送邮件
SendEmail.send(email, sb.toString());
}
package com.nroad.common;
import com.nroad.config.EmailConfig;
import com.nroad.exception.RegisterException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
/**
* Created by Administrator on 2017/5/8.
*/
public class SendEmail {
private static Log log = LogFactory.getLog(SendEmail.class);
/**
* 发送邮件
* @param toEmail 接收方email
* @param content 发送参数及内容
*/
public static void send(String toEmail,String content){
Session session = getSession();
log.info("--send--"+content);
Message msg = new MimeMessage(session);
//发送邮件开始
try {
log.info("发送邮件开始");
msg.setFrom(new InternetAddress(EmailConfig.getEmail()));
InternetAddress[] address = {new InternetAddress(toEmail)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("账号激活邮件");
msg.setSentDate(new Date());
msg.setContent(content , "text/html;charset=utf-8");
Transport.send(msg);
log.info("发送邮件结束");
} catch (MessagingException e) {
log.info("发送邮件失败 ");
e.printStackTrace();
throw new RegisterException("发送邮箱失败");
}
}
/**
* 获取Session
* @return
*/
private static Session getSession(){
Properties props = new Properties();
props.put("mail.smtp.host", EmailConfig.getHost());//设置服务器地址
props.put("mail.store.protocol" , EmailConfig.getProptocol());//设置协议
props.put("mail.smtp.port", EmailConfig.getPort());//设置端口
props.put("mail.smtp.auth" , true);
Authenticator authenticator = new Authenticator(){
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(EmailConfig.getEmail(), EmailConfig.getPassword());
}
};
Session session = Session.getDefaultInstance(props, authenticator);
return session;
}
}