package jp.sourceforge.jmailagent.test;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;

import jp.sourceforge.mailagent.MailAgent;
import jp.sourceforge.mailagent.MailAgentBuilder;
import jp.sourceforge.mailagent.MailConfig;
import jp.sourceforge.mailagent.ResultMail;
import jp.sourceforge.mailagent.TemplateConfig;

public class TestMain{

   public static void main(String[] args){
      Logger logger = Logger.getLogger("mailagent");
      // 実行ディレクトリ→テンプレートロードPATH調整
      String currnetPath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
      logger.info("currnet Path ["+currnetPath+"]");
      String templateLoadpath;
      if (File.separator.equals("\\")){
         templateLoadpath = currnetPath.substring(1)+"../template";
      }else{
         templateLoadpath = currnetPath+"../template";
      }
      
      // メール送信ＳＭＴＰ設定
      MailConfig mailConfig = new MailConfig();
      mailConfig.setSmtphost("201.xx.xx.xx"); // TODO SMTP host 指定
      mailConfig.setSmtpauth(false);
      mailConfig.setTimeout(20);
      mailConfig.setEncode("Shift_JIS");
      
      // テンプレート設定
      TemplateConfig templateConfig = new TemplateConfig();
      templateConfig.setTemplateLoadpath(templateLoadpath);
      templateConfig.setTemplateInEncode("Windows-31J");
      templateConfig.setTemplateOutEncode("Windows-31J");
      
      // MailAgentビルダを生成
      MailAgentBuilder mbuilder = new MailAgentBuilder(mailConfig,templateConfig);
      //MailAgentBuilder mbuilder = new MailAgentBuilder(mailConfig);
      
      MailAgent mailAgent = mbuilder.create("sample.vm");
      //MailAgent mailAgent = mbuilder.create();
      try{
      // Subject作成
      mailAgent.setSubject("テストメール");
      // 宛て先指定
      Map<String,String> tomap = new HashMap<String,String>();
      tomap.put("foo@xxx.com","FOO");
      mailAgent.setTO(tomap);
      
      // From 設定
      mailAgent.setFROM("foo@xxx.com");
      // 返信先
      mailAgent.setReplyTo("foo@xxx.com");
      
      //mailAgent.setMailConfig(mailConfig);
      
      // Body の作成 テンプレート使用
      List<String> list = new ArrayList<String>();
      list.add("list [1] テストデータ１");
      list.add("list [2] テストデータ２");
      list.add("list [3] テストデータ３");
      Map<String,Object> map = new HashMap<String,Object>();
      map.put("list",list);
      map.put("msg","テストメール送信");
      // テンプレートとマージ
      mailAgent.setBody(map);
      
     // mailAgent.setTempFiles(new File("c:/work/設計書.xls"));
      
      // メール配信
      ResultMail res = mailAgent.send();
      Throwable th = res.getThrowable();
      logger.info("■ res status = "+res.isStatus());
      // 送信失敗ならスタックトレース
      if (res.isStatus()==false){
        logger.error("◆ res errormsg = "+res.getErrormsg());
        if (th != null){
           th.printStackTrace();
        }
      }
      //
      
      }catch(Exception e){
         logger.error("◆ catch Exception : "+e.getMessage(),e);
      }finally{
         logger.info("■ mail message=["+mailAgent.getMessage()+"]");
      }
      
   }

}
