`
cqh520llr
  • 浏览: 509869 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

spring使用模板发送邮件及附件笔记

 
阅读更多
http://blog.csdn.net/greensurfer/article/details/7557115

需要引用的jar包:
mail-1.4.1.jar
activation-1.1.jar
spring-context-support-2.5.jar
spring-webmvc.jar

前台页面
forgetPassword.jsp:
[html] view plaincopy
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<%  
String path = request.getContextPath();  
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
%>  
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
    <base href="<%=basePath%>">  
      
    <title>忘记密码</title>  
      
    <meta http-equiv="pragma" content="no-cache">  
    <meta http-equiv="cache-control" content="no-cache">  
    <meta http-equiv="expires" content="0">      
  
  </head>  
    
  <body>  
    <h2>忘记密码处理</h2>  
    <form action="forgetPassword" name="form1" method="post">  
        您的注册邮箱:<input type="text" name="user.userId" value=""/>  
        <input type="submit" value=" 提交  ">  
    </form>  
  </body>  
</html>  



MailAction.java:
[java] view plaincopy
package com.gifer.action;  
  
import java.io.File;  
import java.io.IOException;  
import java.io.UnsupportedEncodingException;  
import java.text.SimpleDateFormat;  
import java.util.Date;  
import java.util.HashMap;  
import java.util.Map;  
  
import javax.mail.MessagingException;  
import javax.mail.internet.MimeMessage;  
import javax.mail.internet.MimeUtility;  
  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
import org.springframework.core.io.FileSystemResource;  
import org.springframework.mail.SimpleMailMessage;  
import org.springframework.mail.javamail.JavaMailSenderImpl;  
import org.springframework.mail.javamail.MimeMessageHelper;  
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;  
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;  
  
import com.gifer.model.LoginUser;  
import com.opensymphony.xwork2.ActionSupport;  
  
import freemarker.template.Template;  
import freemarker.template.TemplateException;  
  
public class MailAction extends ActionSupport {  
  
    /** 
     *  
     */  
    private static final long serialVersionUID = 4962937405531604950L;  
  
    private static final Logger log = LoggerFactory.getLogger(MailAction.class);  
  
    private JavaMailSenderImpl mailSender;  
    private SimpleMailMessage mailMessage;  
    private FreeMarkerConfigurer freeMarkerConfigurer;  
  
    private LoginUser user;  
  
    public void setMailSender(JavaMailSenderImpl mailSender) {  
        this.mailSender = mailSender;  
    }  
  
    public void setMailMessage(SimpleMailMessage mailMessage) {  
        this.mailMessage = mailMessage;  
    }  
  
    public void setUser(LoginUser user) {  
        this.user = user;  
    }  
  
    public void setFreeMarkerConfigurer(  
            FreeMarkerConfigurer freeMarkerConfigurer) {  
        this.freeMarkerConfigurer = freeMarkerConfigurer;  
    }  
  
    @Override  
    public String execute() throws Exception {  
        // String content = "hello," + user.getUserId()  
        // + ",您的临时密码是:123456,请及时登录修改。";  
  
        // 发送简单邮件  
        // this.sendSimpleMail(content);  
  
        // 发送html邮件  
        // this.sendHtmlMail(content);  
  
        this.sendTemplateMail();  
  
        return SUCCESS;  
    }  
  
    // 发送简单文本内容邮件  
    private void sendSimpleMail(String content) {  
        this.mailMessage.setTo(user.getUserId());// 邮件接收者  
        this.mailMessage.setText(content);// 邮件内容  
        this.mailSender.send(mailMessage);// 发送  
    }  
  
    // 发送HTML内容邮件  
    private void sendHtmlMail(String content) {  
        MimeMessage mailMsg = this.mailSender.createMimeMessage();  
        MimeMessageHelper messageHelper = new MimeMessageHelper(mailMsg);  
  
        String html = "<html><head></head><body><h1>Hello</h1>" + content  
                + "</body></html>";  
  
        try {  
            messageHelper.setTo(user.getUserId());  
            messageHelper.setText(html, true);// true 表示启动HTML格式的邮件  
        } catch (MessagingException e) {  
            log.error(e.getMessage(), e);  
        }  
  
        this.mailSender.send(mailMessage);// 发送  
    }  
  
    // 发送邮件内容采用模板  
    public void sendTemplateMail() {  
  
        try {  
            MimeMessage mailMsg = this.mailSender.createMimeMessage();  
  
            MimeMessageHelper messageHelper = new MimeMessageHelper(mailMsg,  
                    true, "UTF-8");  
            messageHelper.setTo(user.getUserId());// 接收邮箱  
            messageHelper.setFrom(this.mailMessage.getFrom());// 发送邮箱  
            messageHelper.setSentDate(new Date());// 发送时间  
            messageHelper.setSubject(this.mailMessage.getSubject());// 邮件标题  
  
            // true 表示启动HTML格式的邮件  
            messageHelper.setText(this.getMailText(), true);// 邮件内容  
  
            // 添加邮件附件  
            FileSystemResource rarfile = new FileSystemResource(new File(  
                    "E:\\UploadFileDemo\\mail图片测试.png"));  
  
            // addAttachment addInline 两种附件添加方式  
            // 以附件的形式添加到邮件  
            // 使用MimeUtility.encodeWord 解决附件名中文乱码的问题  
            messageHelper.addAttachment(MimeUtility.encodeWord("mail图片测试.png"),  
                    rarfile);  
  
            // <img src='cid:file'/> 此处将文件内容嵌入邮件页面中  
            // 这里的'cid:file'与addInline('file',rarfile)中的file对应  
            messageHelper.addInline("file", rarfile);  
  
            this.mailSender.send(mailMsg);// 发送  
  
        } catch (MessagingException e) {  
            log.error(e.getMessage(), e);  
        } catch (UnsupportedEncodingException e) {  
            log.error(e.getMessage(), e);  
        }  
  
    }  
  
    /** 
     * 获取模板并将内容输出到模板 
     *  
     * @param content 
     * @return 
     */  
    private String getMailText() {  
        String html = "";  
  
        try {  
  
            Map map = new HashMap();  
            map.put("userName", "greensurfer");  
            map.put("userId", user.getUserId());  
            map.put("password", "123456");  
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");  
  
            map.put("sendTime", sdf.format(new Date()));  
            // 装载模板  
            Template tpl = this.freeMarkerConfigurer.getConfiguration()  
                    .getTemplate("forgetPassword.ftl");  
            // 加入map到模板中 输出对应变量  
            html = FreeMarkerTemplateUtils.processTemplateIntoString(tpl, map);  
  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (TemplateException e) {  
            e.printStackTrace();  
        }  
        return html;  
    }  
}  


applicationContext.xml部分:
[html] view plaincopy
<!-- 邮件发送方配置bean -->  
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">  
        <property name="host" value="smtp.163.com" />  
        <!-- mail account -->  
        <property name="username" value="gifer" />  
        <property name="password" value="123456" />  
        <property name="javaMailProperties">  
            <props>  
                <prop key="mail.smtp.auth">true</prop>  
            </props>  
        </property>  
    </bean>  
    <!-- 邮件发送模板 -->  
    <bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">  
        <property name="from" value="xxxxxxx@163.com" />  
        <property name="subject" value="帐户密码忘记邮件" />  
    </bean>  
    <!-- 配置发送模板bean-->  
    <bean id="freeMarkerConfigurer"  
        class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">  
        <property name="templateLoaderPaths" value="classpath:mailTemplate" /><!-- 模板路径位置 -->  
        <property name="freemarkerSettings">  
            <props>  
                <prop key="template_update_delay">1800</prop><!-- 模板更新延时 -->  
                <prop key="default_encoding">UTF-8</prop>  
                <prop key="locale">zh_CN</prop>  
            </props>  
        </property>  
    </bean>  
    <bean id="mailAction" class="com.gifer.action.MailAction"  
        abstract="false" scope="prototype" lazy-init="default" autowire="default"  
        dependency-check="default">  
        <property name="mailSender">  
            <ref bean="mailSender" />  
        </property>  
        <property name="mailMessage">  
            <ref bean="mailMessage" />  
        </property>  
        <property name="freeMarkerConfigurer">  
            <ref bean="freeMarkerConfigurer"/>  
        </property>  
    </bean>  


struts.xml
[html] view plaincopy
<action name="forgetPassword" class="mailAction">  
            <result name="success">jsp/mailSuccess.jsp</result>  
            <result name="input">jsp/forgetPassword.jsp</result>  
        </action>  



模板文件
forgetPassword.ftl:
[html] view plaincopy
<!DOCTYPE head PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<title></title>  
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">  
<style type="text/css">  
body {  
    font-size: 14px;  
    line-height: 1.5  
}  
</style>  
</head>  
<body>  
    <table cellspacing="0" cellpadding="20">  
        <tr>  
            <td>  
                <table width="500" cellspacing="0" cellpadding="1">  
                    <tr>  
                        <td bgcolor="#FF8E00" align="left"  
                            style="font-family:'lucida grande',tahoma,'bitstream vera sans',helvetica,sans-serif;line-height:150%;color:#FFF;font-size:24px;font-weight:bold;padding:4px">   
                            GIFER社区  
                        <th></th>  
                    </tr>  
                    <tr>  
                        <td bgcolor="#FF8E00">  
                            <table width="100%" cellspacing="0" bgcolor="#FFFFFF"  
                                cellpadding="20">  
                                <tr>  
                                    <td  
                                        style="font-family:'lucida grande',tahoma,'bitstream vera sans',helvetica,sans-serif;line-height:150%;color:#000;font-size:14px;">  
                                        亲爱的${userName}:  
                                        <blockquote>  
                                            <br> <strong>您在gifer.com的帐户${userId}密码忘记了?该邮件为你提供临时密码:${password},请及时登录,修改您的密码。</strong><br>  
                                            <br>如果下面链接不可用,请复制下面的链接到浏览器进行访问,以便修改你的帐户密码。<br>帐户密码修改链接:<br>  
                                            <a href="http://localhost:10002/UserManager/" target="_blank">http://localhost:10002/UserManager/</a><br>  
                                            <br>  
                                        </blockquote> <br> <br>GIFER 社区<br> <a  
                                        href="http://localhost:10002/UserManager/" target="_blank">http://localhost:10002/UserManager/</a>  
                                        <br>发送时间:${sendTime}<br> <br>此邮件为系统自动发出,请勿回复。</td>  
                                          
                                </tr>  
                            </table></td>  
                    </tr>  
                </table></td>  
        </tr>  
    </table>  
    <img src='cid:file'/>  
</body>  
</html>  
分享到:
评论

相关推荐

    Spring 使用163发邮件带附件

    总的来说,Spring发送带附件的邮件涉及了对Spring框架、JavaMail API的理解,以及163邮箱的设置。这个过程涉及到的代码编写和配置调整对于任何需要通过电子邮件进行通信的Java应用都是至关重要的。通过学习和实践这...

    Spring Boot整合邮件发送并保存历史发送邮箱

    项目主要是使用 Spring Boot 发送邮件,主要的技术点有: 1、Spring Boot +mybatis的整合 2、Spring Boot项目中jsp的使用 3、Spring Boot 发送邮件(文本格式的邮件、发送HTML格式的邮件、发送带附件 的邮件、...

    使用Spring Boot 开发支持多附件邮件发送微服务平台代码

    本项目聚焦于使用Spring Boot来开发一个支持多附件邮件发送的微服务平台。这个平台可以方便地集成到各种业务场景中,例如发送报告、通知或者用户验证邮件。 首先,我们需要了解Spring Boot的邮件服务模块——`...

    使用springMail发送带附件的email

    在本项目中,我们将深入探讨如何使用SpringMail发送带有附件的电子邮件。首先,我们需要了解几个核心概念: 1. **JavaMail API**: 这是Java平台上的一个标准API,用于处理邮件相关任务,如创建、发送和接收邮件。它...

    Spring 使用Freemarker发送邮件的一个简单模板(代码不完整)

    标题“Spring使用Freemarker发送邮件的一个简单模板”指的是通过Spring的JavaMailSender接口和Freemarker模板来生成和发送邮件。首先,我们需要在项目中引入Spring和Freemarker的相关依赖,确保能够使用这两个库的...

    Spring中使用FreeMaker或Vilocity模板发送邮件

    这篇博文主要探讨如何在Spring应用中利用这两种模板引擎来实现邮件的发送。 首先,我们需要理解Spring的邮件服务支持。Spring提供了`JavaMailSender`接口,用于发送邮件。它提供了基本的邮件发送功能,如设置发件人...

    struts2+spring3.0+mybatis3.0.4集成的邮件发送实例(可上传附件)

    总之,这个实例结合了Struts2、Spring和Mybatis的强大功能,提供了一个完整的邮件发送系统,包括邮件的创建、附件上传和数据库操作。对这个实例的学习和实践,可以帮助开发者深入理解Java企业级应用的开发流程和技巧...

    (源码)基于Spring Boot框架的邮件发送系统.zip

    项目涵盖了发送文本邮件、HTML邮件、带附件的邮件以及使用模板发送邮件等多种功能。 ## 项目的主要特性和功能 1. 文本邮件发送支持发送简单的文本邮件。 2. HTML邮件发送支持发送HTML格式的邮件,可以嵌入图片和...

    SpringBoot使用FreeMarker模板发送邮件

    通过springboot 整合freemarker模板引擎,自动发送html格式邮件

    spring boot定时任务接收邮件并且存储附件的方法讲解

    在本文中,我们将学习如何使用 Spring Boot 实现定时任务接收邮件并且存储附件。首先,我们需要创建一个服务类,例如 `TimerTaskServiceImpl`,它将负责接收邮件和存储附件。 在 `TimerTaskServiceImpl` 中,我们...

    spring velocity 发邮件(单发,群发,图片,附件)

    标题 "spring velocity 发邮件(单发,群发,图片,附件)" 涉及到的是在Java开发中使用Spring框架集成Velocity模板引擎来发送电子邮件的功能。这个话题涵盖了多个知识点,包括Spring的邮件服务、Velocity模板引擎的应用...

    邮件模板发送(SendMailTemplate)

    在IT行业中,邮件模板发送是一种高效且个性化的通信方式,特别是在企业级应用中,它能够帮助用户批量发送具有统一格式但又能包含个性化信息的电子邮件。本文将深入探讨邮件模板发送的概念、工作原理以及如何实现这一...

    spring+velocity发送邮件

    根据提供的信息,我们可以详细探讨如何使用Spring框架结合Velocity模板引擎来实现邮件的自动化发送功能。这一过程涉及到Spring框架的基本配置、Velocity模板引擎的使用以及JavaMail API的应用。 ### Spring框架与...

    spring各种邮件发送

    在IT行业中,Spring框架是Java开发中的一个关键组件,它提供了丰富的...对于那些需要发送大量或定期邮件的应用,还可以考虑使用邮件队列服务,如Amazon SES或SendGrid,配合Spring进行集成,实现高效、可靠的邮件发送。

    Spring 使用163发邮件

    2. **配置Spring发送邮件**: 在Spring应用中,我们需要配置`JavaMailSender`的实现,这通常在Spring的配置文件(如`applicationContext.xml`)或者使用Java配置类来完成。配置包括SMTP服务器地址、端口、用户名、...

    Springboot发送邮件

    本主题将深入探讨如何使用Spring Boot实现邮件发送功能,涵盖了文本邮件、图片邮件、模板邮件和HTML邮件的发送。 一、Spring Boot集成邮件服务 Spring Boot通过集成了JavaMailSender接口和JavaMailSenderImpl类,...

    java发送邮件 spring发送邮件

    通过以上步骤,你就可以在Java应用中使用Spring发送邮件了。当然,实际的邮件发送可能更复杂,涉及HTML内容、附件、多部分消息等,可以使用`MimeMessage`和`MimeMessageHelper`类来构建复杂的邮件结构。例如,添加...

Global site tag (gtag.js) - Google Analytics