freemarker通过struts2发送邮件案例

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());
  }

 }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值