package top.hunfan.mail.utils;

import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;

/**
 * 负载均衡
 * @author hf-hf
 * @date 2018/12/27 14:40
 */
public class MailManager {

    public static Map<String, Properties> propertiesMap = new ConcurrentHashMap<>();

    public static Map<String, Session> sessionMap = new ConcurrentHashMap<>();

    public static void putProperties(String key, Properties properties){
        propertiesMap.put(key, properties);
    }

    public static void putSession(String key, Session session){
        sessionMap.put(key, session);
    }

    public static void putBoth(String key, Properties properties){
        putProperties(key, properties);
        // 此处要用 Session#getInstance,Session#getDefaultInstance 为单例
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(properties.getProperty("mail.username"),
                        properties.getProperty("mail.password"));
            }
        });
        if(null != properties.getProperty("mail.debug")){
            session.setDebug(Boolean.valueOf(properties.getProperty("mail.debug")));
        }
        putSession(key, session);
    }

    public static void putBoth(Object key, Properties properties){
        putBoth(String.valueOf(key), properties);
    }

    public static Session getSession(String key){
        return sessionMap.get(key);
    }

    public static Properties getProperties(String key){
        return propertiesMap.get(key);
    }

}