package vs.datapower.datacollection.mail;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Locale;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import vs.das.log.DasclSvrLogContent;
import vs.datapower.core.newmail.bean.EmailBean;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
/**
* 类描述:请在这里填写该类具有xxxx作用
*/
public class InitTemplate0 extends HttpServlet {
private static DasclSvrLogContent logContent = new DasclSvrLogContent(
Logger.getLogger(InitTemplate0.class));// 记录日志
private Template template;
private Configuration cfg;
public void init(){
//创建Configuration对象
cfg = new Configuration();
ServletActionContext.getServletContext();
cfg.setServletContextForTemplateLoading(ServletActionContext.getServletContext(), "/");
cfg.setEncoding(Locale.getDefault(), "gbk");
}
/**
*
* @param ftl
* 模板文件
* @param htmlName
* 文件名称
* @param datamap
* datamap保存数据
* @throws IOException
* @throws TemplateException
*/
public void ftltohtml(String ftl, String htmlName, Map datamap)
throws IOException, TemplateException {
// 创建Template对象
Template template = cfg.getTemplate(ftl);
template.setEncoding("gbk");
// 生成静态页面
String path = ServletActionContext.getServletContext().getRealPath("/");
File fileName = new File(path + htmlName);
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(fileName), "gbk"));
template.process(datamap, out);
out.flush();
out.close();
}
/**
* 发送数据()
*
*/
public boolean sendTemplate(EmailBean email) {
Writer out2 = null;
ByteArrayOutputStream bos = null;
boolean isSuccess = false;
if (email.getTemplate() != null) {
try {
template = cfg.getTemplate(email.getTemplate());
bos = new ByteArrayOutputStream();
out2 = new OutputStreamWriter(bos, "GB2312");
template.process(email.getRoot(), out2);
} catch (TemplateException e) {
logContent.logContentError(getClass()
+ ": Error while processing FreeMarker template :"
+ e.getMessage());
} catch (IOException e) {
logContent.logContentError(getClass() + ": 无法读取模板数据 :"
+ e.getMessage());
} finally {
try {
out2.close();
} catch (IOException e) {
logContent.logContentError(getClass() + ": 无法关闭连接 :"
+ e.getMessage());
}
}
String content = bos.toString();
// 主要实现发送功能
email.getCommonHtmlEmail().setHostName(email.getHostname()); // 设置发送端服务器
email.getCommonHtmlEmail().setAuthentication(email.getUsername(),
email.getPassword()); // 用户名和密码
email.getCommonHtmlEmail().setCharset("GBK"); // 设置字符集
// email.getCommonHtmlEmail().setContent("text/html;charset=utf8");
try {
email.getCommonHtmlEmail().setFrom(email.getFrom(),
"系统(" + email.getRoot().get("sendPerson") + ")"); // 发件人
String toPersonName = (String) email.getRoot().get(
"toPerson_name");
email.getCommonHtmlEmail().addTo(
email.getTo(),
toPersonName == null || "".equals(toPersonName)
? ""
: toPersonName); // 收件人1
email.getCommonHtmlEmail().setSubject(email.getSubject()); // 主题
email.getCommonHtmlEmail().setHtmlMsg(content);
email.getCommonHtmlEmail().send();
isSuccess = true;
} catch (Exception e) {
logContent.logContentError(e.getLocalizedMessage());
isSuccess = false;
}
}
return isSuccess;
}
}
/**
**发送接口方法
*/
public static void addTaskSendMail(String message, String logger)
throws BaseException {
try {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = df.format(new Date());
EmailBean mailbean = new EmailBean();
mailbean = new EmailBean();
mailbean.setHostname("10.78.161.1");
mailbean.setTo("qustbestwyf@126.com");
mailbean.setFrom("***");
mailbean.setUsername("**");
mailbean.setPassword("**");
HtmlEmail email = new HtmlEmail();
mailbean.setCommonHtmlEmail(email);
mailbean.setTemplate(TEMPLATE_REVISE);
mailbean.put("sendTime", time); // 发件时间
mailbean.put("messageContent", message);
mailbean.put("logger", logger);
mailbean.put("sendPerson", "***"); // 发件人
mailbean.put("toPerson_name", "***"); // 收件人姓名
// mailbean.put("revisenum",
// StringUtil.isJavaNull(map.get("dbname")));
// //缺失数据量
mailbean.setSubject("您采集模板问题需要解决");
mailbean.put("body", "质检系统下发补录任务时模板未找到,导致任务无法下发");
InitTemplate0 initTemplate = new InitTemplate0();
initTemplate.init();
initTemplate.sendTemplate(mailbean);
} catch (Exception e) {
throw new BaseException("发送邮件出错了"+ e.getMessage());
}
}