利用 spring+freemarker 发送邮件

在做本次试验之前需要spring相关的jar和freemarker.jar

①定义发送邮件的模板

demo.ftl

[html]  view plain copy print ?
  1. <!--这里可以写html代码,传递过来的参数可以用${}来接收 ,很是方便-->  
  2.   
  3. <a href="http://www.xxx.com">你好${username}</a>  

②发送邮件java类

[java]  view plain copy print ?
  1. package com.woaika.loan.utils;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import javax.mail.MessagingException;  
  6. import javax.mail.internet.MimeMessage;  
  7.   
  8. import org.springframework.mail.MailException;  
  9. import org.springframework.mail.javamail.JavaMailSender;  
  10. import org.springframework.mail.javamail.MimeMessageHelper;  
  11. import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;  
  12. import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;  
  13.   
  14. import freemarker.template.Template;  
  15.   
  16. /** 
  17.  * 发送邮件 可以自己编写html模板 
  18.  * @author ajun 
  19.  * @email zhaojun2066@gmail.com 
  20.  * @blog http://blog.youkuaiyun.com/ajun_studio 
  21.  * 2011-12-6 下午04:49:01 
  22.  */  
  23. public class TemplateEmail {  
  24.   
  25.     private JavaMailSender sender;    
  26.     private FreeMarkerConfigurer freeMarkerConfigurer=null;//FreeMarker的技术类    
  27.         
  28.     public void setFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer) {    
  29.         this.freeMarkerConfigurer = freeMarkerConfigurer;    
  30.     }    
  31.         
  32.     public void setSender(JavaMailSender sender) {    
  33.         this.sender = sender;    
  34.     }    
  35.       
  36.     /** 
  37.      * 生成html模板字符串 
  38.      * @param root 存储动态数据的map 
  39.      * @return 
  40.      */  
  41.     private String getMailText(Map<String,Object> root,String templateName){  
  42.          String htmlText="";    
  43.             try {    
  44.                 //通过指定模板名获取FreeMarker模板实例    
  45.                 Template tpl=freeMarkerConfigurer.getConfiguration().getTemplate(templateName);    
  46.                 htmlText=FreeMarkerTemplateUtils.processTemplateIntoString(tpl,root);    
  47.             } catch (Exception e) {    
  48.                 e.printStackTrace();    
  49.             }    
  50.             return htmlText;    
  51.     }  
  52.       
  53.     /** 
  54.      * 发送邮件 
  55.      * @param root 存储动态数据的map 
  56.      * @param toEmail 邮件地址 
  57.      * @param subject 邮件主题 
  58.      * @return 
  59.      */  
  60.     public boolean sendTemplateMail(Map<String,Object> root,String toEmail,String subject,String templateName){    
  61.         try {  
  62.             MimeMessage msg=sender.createMimeMessage();    
  63.             MimeMessageHelper helper=new MimeMessageHelper(msg,false,"utf-8");//由于是html邮件,不是mulitpart类型    
  64.             helper.setFrom("admin@xxx.com");    
  65.             helper.setTo(toEmail);    
  66.             helper.setSubject(subject);    
  67.             String htmlText=getMailText(root,templateName);//使用模板生成html邮件内容    
  68.             helper.setText(htmlText, true);    
  69.             sender.send(msg);  
  70.             //System.out.println("成功发送模板邮件");    
  71.             return true;  
  72.         } catch (MailException e) {  
  73.            // System.out.println("失败发送模板邮件");   
  74.             e.printStackTrace();  
  75.             return false;  
  76.         } catch (MessagingException e) {  
  77.         //  System.out.println("失败发送模板邮件");   
  78.             e.printStackTrace();  
  79.             return false;  
  80.         }    
  81.          
  82.     }    
  83. }  


③实例化相关freemarker类的配置文件,并交给spring来管理

applicationContext-sendMail.xml


[html]  view plain copy print ?
  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.  xmlns:context="http://www.springframework.org/schema/context"  
  3.  xmlns:p="http://www.springframework.org/schema/p"  
  4.  xmlns:mvc="http://www.springframework.org/schema/mvc"  
  5.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  6.  xmlns:aop="http://www.springframework.org/schema/aop"  
  7.  xmlns:tx="http://www.springframework.org/schema/tx"  
  8.  xsi:schemaLocation="http://www.springframework.org/schema/beans  
  9.       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  10.       http://www.springframework.org/schema/context  
  11.       http://www.springframework.org/schema/context/spring-context.xsd  
  12.       http://www.springframework.org/schema/tx   
  13.       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
  14.       http://www.springframework.org/schema/aop  
  15.       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
  16.       http://www.springframework.org/schema/mvc  
  17.       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">  
  18.              
  19.     <bean id="freeMarker" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">  
  20.       <property name="templateLoaderPath" value="classpath:mailtemplates"/><!--指定模板文件目录-->   
  21.       <property name="freemarkerSettings"><!-- 设置FreeMarker环境属性-->   
  22.           <props>  
  23.               <prop key="template_update_delay">1800</prop><!--刷新模板的周期,单位为秒-->   
  24.               <prop key="default_encoding">UTF-8</prop><!--模板的编码格式 -->  
  25.               <prop key="locale">zh_CN</prop><!-- 本地化设置-->  
  26.           </props>  
  27.       </property>  
  28.     </bean>  
  29.     <bean id="templateEmail" class="com.woaika.loan.utils.TemplateEmail">  
  30.         <property name="sender" ref="mailsender"></property>  
  31.         <property name="freeMarkerConfigurer" ref="freeMarker"></property>  
  32.     </bean>   
  33.       
  34.     <bean id="mailsender"    
  35.         class="org.springframework.mail.javamail.JavaMailSenderImpl">    
  36.         <property name="host">    
  37.             <value>mail.xx.com</value>    
  38.         </property>    
  39.         <property name="javaMailProperties">    
  40.             <props>    
  41.                 <prop key="mail.smtp.auth">true</prop>    
  42.                 <prop key="mail.smtp.timeout">25000</prop>    
  43.             </props>    
  44.         </property>    
  45.         <property name="username">    
  46.             <value>admin</value>    
  47.         </property>    
  48.         <property name="password">    
  49.             <value>qq22qq56we</value>    
  50.         </property>    
  51.     </bean>    
  52.       
  53. </beans>  

④调用的时候,只需调用的类中注入TemplateEmail这个,然后调用相关的方法就可以了


[java]  view plain copy print ?
  1. package com.woaika.loan.front.apply.action;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import javax.annotation.Resource;  
  7.   
  8. import org.springframework.stereotype.Component;  
  9.   
  10. import com.woaika.loan.utils.TemplateEmail;  
  11.   
  12. /** 
  13.  * 发送邮件 
  14.  * @author ajun 
  15.  * @email zhaojun2066@gmail.com 
  16.  * @blog http://blog.youkuaiyun.com/ajun_studio 
  17.  * 2012-3-13 上午10:50:26 
  18.  */  
  19. @Component("demoEmail")  
  20. public class DemoEmail {  
  21.   
  22.     private TemplateEmail templateEmail;  
  23.       
  24.     @Resource(name="templateEmail")  
  25.     public void setTemplateEmail(TemplateEmail templateEmail) {  
  26.         this.templateEmail = templateEmail;  
  27.     }   
  28.       
  29.     public void send(){  
  30.         Map<String,Object> root = new HashMap<String,Object>();  
  31.         root.put("username""ajun");  
  32.         templateEmail.sendTemplateMail(root, "ajun@gmail.com","主题标题","demo.ftl");  
  33.     }  
  34.       
  35.       
  36.       
  37. }  

ok ,赶快试试吧 很方便,而且spring可以定时帅新模板,这样就可以不重启服务了


出处:http://blog.youkuaiyun.com/ajun_studio/article/details/7347644

内容概要:该论文聚焦于6G通信中20-100GHz频段的电磁场(EMF)暴露评估问题,提出了一种基于自适应可重构架构神经网络(RAWA-NN)的预测框架。该框架通过集成权重分析模块和优化模块,能够自动优化网络超参数,显著减少训练时间。模型使用70%的前臂数据进行训练,其余数据用于测试,并用腹部和股四头肌数据验证模型泛化能力。结果显示,该模型在不同参数下的相对差异(RD)在前臂低于2.6%,其他身体部位低于9.5%,可有效预测皮肤表面的温升和吸收功率密度(APD)。此外,论文还提供了详细的代码实现,涵盖数据预处理、权重分析模块、自适应优化模块、RAWA-NN模型构建及训练评估等内容。 适合人群:从事电磁兼容性研究、6G通信技术研发以及对神经网络优化感兴趣的科研人员和工程师。 使用场景及目标:①研究6G通信中高频段电磁暴露对人体的影响;②开发更高效的电磁暴露评估工具;③优化神经网络架构以提高模型训练效率和预测精度。 其他说明:论文不仅提出了理论框架,还提供了完整的代码实现,方便读者复现实验结果。此外,论文还讨论了未来的研究方向,包括扩展到更高频段(如300GHz)的数据处理、引入强化学习优化超参数、以及实现多物理场耦合的智能电磁暴露评估系统。建议读者在实际应用中根据具体需求调整模型架构和参数,并结合真实数据进行验证。
内容概要:本文是北京金融科技产业联盟发布的《基于数据空间的金融数据可信流通研究报告》,探讨了金融数据可信流通的现状、挑战和发展前景。文章首先介绍了金融数据在数字化转型中的重要性及其面临的隐私保护和安全挑战。接着,文章详细阐述了数据空间的概念及其发展历程,尤其是可信数据空间(TDM)在我国的发展情况。文中还深入分析了金融数据可信流通的典型应用场景、关键技术和方案架构,如数据访问控制、数据使用控制、智能合约、数据脱敏等。最后,文章展示了多个典型场景应用案例,如中信银行总分行数据流通管控、工银金租数据流通、银联安全生物特征支付等,并总结了当前可信数据空间建设中存在的法规、技术、标准和商业模式挑战,提出了相应的政策建议。 适用人群:金融行业从业者、数据安全管理人员、政策制定者、科技研发人员等。 使用场景及目标:①理解金融数据可信流通的重要性和挑战;②学习可信数据空间的关键技术和应用场景;③探索金融数据可信流通的具体实践案例;④了解当前可信数据空间建设的瓶颈和未来发展方向。 其他说明:本文不仅提供了详尽的技术和应用分析,还提出了具体的政策建议,有助于推动金融数据可信流通的健康发展。阅读本文可以帮助读者深入了解金融数据安全保护和高效利用的最佳实践,为相关政策和技术的发展提供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值