package com.yc.education.util;

import com.sun.mail.util.MailSSLSocketFactory;
import org.apache.log4j.Logger;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * @ClassName SendEmailUtil
 * @Description TODO 发送邮件
 * @Author QuZhangJing
 * @Date 2018/12/29 15:05
 * @Version 1.0
 */
public class SendEmailUtil {


    // public static String sender = "hcb@haochengben.com";
   /* public static String sender = "lwhstart@163.com";*/

      static  Logger logger = Logger.getLogger(SendEmailUtil.class);

    /**
     * 发送邮件处理
     *
     * @param longin    邮箱账号
     * @param password  邮箱授权码
     * @param sender    邮件发送者 一般与邮箱账号相同
     * @param recipient 邮件接收人
     * @param theme     邮件主题
     * @param text      邮件内容
     */
    public static void sendMail(String longin, String password, String sender, String recipient, String theme, String text) {
        // 配置
        Properties prop = new Properties();
        // 设置邮件服务器主机名，这里是163
        prop.put("mail.host", "smtp.qq.com");
        // 发送邮件协议名称
        prop.put("mail.transport.protocol", "smtp");
        // 是否认证
        prop.put("mail.smtp.auth", true);

        try {
            // SSL加密
            MailSSLSocketFactory sf = null;
            sf = new MailSSLSocketFactory();
            // 设置信任所有的主机
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable", "true");
            prop.put("mail.smtp.ssl.socketFactory", sf);

            // 创建会话对象
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                // 认证信息，需要提供"用户账号","授权码"
                public PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(longin, password);
                }
            });
            // 是否打印出debug信息
            session.setDebug(true);

            // 创建邮件
            Message message = new MimeMessage(session);
            // 邮件发送者
            message.setFrom(new InternetAddress(sender));
            // 邮件接受者
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
            // 邮件主题
            message.setSubject(theme);
            //邮件内容
            message.setContent(text, "text/html;charset=UTF-8");
            // Transport.send(message);
            // 邮件发送
            Transport transport = session.getTransport();
            transport.connect();
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
            logger.error("邮件发送成功!发送人："+sender);
        } catch (Exception e){
            e.printStackTrace();
        }
    }


    public static void main(String[] args) {
        String longin="2179857632@qq.com";
        String password="xurvgrrsechgdibh";
//        String longin="lwhstart@163.com";
//        String password="mtnhlwh0409.";
//        String password="lwh0409";
        String recipient="lwhstart@163.com";
        String theme="邮箱测试";
        String text="邮箱已发送";
        SendEmailUtil.sendMail(longin ,password, longin, recipient, theme, text);
    }


}
