package myday20;

import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.junit.Test;

public class MailUtils {

	/**
	 * 发送邮箱
	 * @param user
	 */
	@Test
	public  void send() {

		try{
			//0准备参数 --将参数放置到配置文件 properties
			//String mail_host = "127.0.0.1";	//主机
			
			String mail_username = "huyumian1987";	//发送邮件账户名称
			String mail_host = "smtp.126.com";	//主机
			String mail_password = "";	//发送邮件账户密码
			String mail_domain = "126.com";	//域名
			String active_url = "http://localhost:8080/ebookstore/user/UserServlet?method=active";//激活的URL

			//0.1 基本设置
			Properties props = new Properties();
			props.setProperty("mail.host", mail_host);
			props.setProperty("mail.smtp.auth", "true");
			//0.2 权限
			Authenticator authenticator = new MyAuthenticator(mail_username, mail_password);

			//1创建回话
			Session session = Session.getDefaultInstance(props, authenticator);

			//2编写消息
			Message message = new MimeMessage(session);
			//2.1发件人
			message.setFrom(new InternetAddress(mail_username + "@" + mail_domain));
			//2.2收件人
			message.setRecipient(RecipientType.TO, new InternetAddress(mail_username + "@" + mail_domain));
			//2.3主题
			message.setSubject("XXX网络书城账号激活邮件");
			String url = active_url + "&userId=";
			//2.4正文
			String data =",您好:<br/>" +
					"您在本书城进行账号的注册,请<a href='"+url+"'>点击</a>进行激活,若不能点击,请复制下面链接,进行注册<br/>" +
					url + " <br/>" +
					"若不是本人,请删除邮件。";
			message.setContent(data, "text/html;charset=UTF-8");

			//3发送邮件
			Transport.send(message);

		}catch (Exception e) {

			e.printStackTrace();
			throw new RuntimeException("邮件没有发送成功",e);
		}
	}

}

class MyAuthenticator extends Authenticator{
	private String username;
	private String password;

	public MyAuthenticator(String username, String password) {
		this.username = username;
		this.password = password;
	}

	@Override
	public PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(username,password);
	}
}