`

spring配gmail

 
阅读更多

 

  1. 配置清单

  <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">  

          <property name="host">  

             <value>smtp.gmail.com</value>  

         </property> 

         <property name="javaMailProperties">  

            <props>  

            <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>  

                <prop key="mail.smtp.socketFactory.fallback">false</prop>  

                <prop key="mail.smtp.port">465</prop>  

                <prop key="mail.smtp.socketFactory.port">465</prop>   

                <prop key="mail.smtp.auth">true</prop>  

                <prop key="mail.smtp.timeout">25000</prop>  

            </props>  

         </property>  

         <property name="username">  

             <value>××××××××</value>  

         </property>  

         <property name="password">  

             <value>××××××</value>  

         </property>

 

          <!-- 上是GMAIL特殊端口465或587,下是配置为25端口(默认)

<property name="host">  

             <value>smtp.163.com</value>  

         </property>  

         <property name="javaMailProperties">  

            <props>  

                 <prop key="mail.smtp.auth">true</prop>  

                 <prop key="mail.smtp.timeout">25000</prop>  

            </props>  

         </property>  

         <property name="username">  

             <value>××××××××××</value>  

         </property>  

         <property name="password">  

             <value>×××××××</value>  

         </property>    -->

    </bean> 

 

2. 注入

 

 @Autowired

 private org.springframework.mail.javamail.JavaMailSenderImpl mailSender;

 

3.发送代码

try {

MimeMessage mailMessage = mailSender.createMimeMessage();

// 设置utf-8或GBK编码,否则邮件会有乱码

MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");

// 设置收件人,寄件人

messageHelper.setTo(email);

messageHelper.setFrom(mailSender.getUsername()); messageHelper.setSubject(PropertiesUtil.getProperties("html_mail_subject"));

// true 表示启动HTML格式的邮件 messageHelper.setText(FreeMarkerUtils.getHtml(targetDir, targetName), true);

// 发送邮件

mailSender.send(mailMessage); return true;

} catch (MessagingException e) {

// TODO Auto-generated catch block e.printStackTrace();

msg.append("*提示:邮件未能正常发送,请重新申请!");

return false;

}

 

 

以上只是记录,其中使用Freemarker做HTML邮件模板处理

附录:

 

properties文件:

 

#html for email to user find back password 

html_file_patch=${tempDir}/html/

http_miv = http://localhost:8080/miv-main/login/retrievePasswordJsp/

html_mail_subject = 找回MIV密码

 

附:

 

package com.miv.core.utils;

 

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException;

import java.io.Writer;

import java.util.HashMap;

import java.util.List;

import java.util.Locale;

import java.util.Map;

 

import freemarker.template.Configuration;

import freemarker.template.DefaultObjectWrapper;

import freemarker.template.Template;

import freemarker.template.TemplateExceptionHandler;

 

public class FreeMarkerUtils {

    public static void generateHtml(String sourceDir, String sourceName, String targetDir, String targetName, List data)

            throws Exception {

 

        // 模板路径

        Configuration cfg = new Configuration();

        // 设置Configuration编码

        cfg.setEncoding(Locale.getDefault(), "UTF-8");

        // 加载free marker模板文件

        cfg.setDirectoryForTemplateLoading(new File(sourceDir));

 

        // 设置对象包装器

        cfg.setObjectWrapper(new DefaultObjectWrapper());

 

        // 设计异常处理器

        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);

 

        // 定义并设置数据

        Map<String, List> map = new HashMap<String, List>();

        map.put("persons", data);

        // 获取指定模板文件

        Template template = cfg.getTemplate(sourceName);

        // 设置模板的编码

        template.setEncoding("UTF-8");

 

        // 定义输入文件,默认生成在工程根目录 ,并且设置输出流的编码;

        Writer out = new OutputStreamWriter(new FileOutputStream(targetDir + targetName), "UTF-8");

 

        // 最后开始生成

        template.process(map, out);

 

    }

 

    public static void generateHtml(String sourceDir, String sourceName, String targetDir, String targetName,

            String data) throws Exception {

 

        // 模板路径

        Configuration cfg = new Configuration();

        // 设置Configuration编码

        cfg.setEncoding(Locale.getDefault(), "UTF-8");

        // 加载free marker模板文件

        cfg.setDirectoryForTemplateLoading(new File(sourceDir));

 

        // 设置对象包装器

        cfg.setObjectWrapper(new DefaultObjectWrapper());

 

        // 设计异常处理器

        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);

 

        // 定义并设置数据

        Map<String, String> map = new HashMap<String, String>();

        map.put("prop", data);

        // 获取指定模板文件

        Template template = cfg.getTemplate(sourceName);

        // 设置模板的编码

        template.setEncoding("UTF-8");

 

        // 创建路径

        mkdir(targetDir);

        // 定义输入文件,默认生成在工程根目录 ,并且设置输出流的编码;

        Writer out = new OutputStreamWriter(new FileOutputStream(targetDir + targetName), "UTF-8");

 

        // 最后开始生成

        template.process(map, out);

 

    }

 

    public static String getHtml(String targetDir, String targetName) {

        BufferedReader bufferreader = null;

        StringBuffer sb = new StringBuffer();

        FileInputStream inputStream = null;

        InputStreamReader inputStreamReader = null;

        try {

            inputStream = new FileInputStream(targetDir + targetName);

            inputStreamReader = new InputStreamReader(inputStream, "UTF-8");

            bufferreader = new BufferedReader(inputStreamReader);

            String line = bufferreader.readLine();

            while (line != null) {

                sb.append(line);

                line = bufferreader.readLine();

            }

            bufferreader.close();

        } catch (UnsupportedEncodingException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (FileNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        return sb.toString();

    }

 

    // 创建文件路径

    public static void mkdir(String  targetDir) {

        File fd = null;

        try {

            fd = new File( targetDir);

            if (!fd.exists()) {

                fd.mkdirs();

            }

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            fd = null;

        }

    }

 

    public static String getSourceDir() {

        return FreeMarkerUtils.class.getResource("/").getPath().split("WEB-INF")[0] + "WEB-INF/freemarker";

    }

}


模板:test.ftl

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>    
    <title>找回密码</title>
  </head>
  <body> 
尊敬的MIV用户:
<br/>
您好!
<br/>
请点击以下链接进行下一步操作:
<br/>
<a href='${prop}'>${prop}</a>
<br/>
如果上面的链接无法点击,您也可以复制链接,粘贴到您浏览器的地址栏内,然后按“回车”键打开预设页面,完成相应功能。
<br/>
如果有其他问题,请联系我们: 谢谢!
<br/>
此为系统消息,请勿回复
  </body>
</html>
分享到:
评论

相关推荐

    利用 spring mail 通过 gmail(SSL) 发邮件

    本教程将详细讲解如何利用Spring Mail通过Gmail的SSL(安全套接层)协议来发送邮件。 首先,我们需要在项目中引入Spring Mail的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    Spring 配XML的十二种技巧

    Spring 配XML的十二种技巧

    夏昕(xiaxin at gmail.com)Spring开发指南.rar

    《夏昕(xiaxin at gmail.com)Spring开发指南》是一个针对Spring框架的详细教程资源,主要包含Spring的核心概念、配置、编程模型以及实战应用等内容。Spring是Java领域中广泛使用的轻量级开源框架,它极大地简化了...

    Spring Integration + Spring WS 整合

    Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web ...

    spring2.0升级到spring3.0.5的开发包

    Spring框架是Java应用程序开发中的一个核心组件,它提供了一个丰富的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)功能,使得开发者能够更方便地管理对象和实现模块化...

    Spring Boot整合Spring Batch,实现批处理

    在Java开发领域,Spring Boot和Spring Batch的整合是构建高效批处理系统的一种常见方式。Spring Boot以其简洁的配置和快速的启动能力深受开发者喜爱,而Spring Batch作为Spring框架的一部分,专注于批量处理任务,...

    spring揭秘.rar_Spring揭秘 下载_spring mvc_spring 揭秘_spring揭秘

    spring揭秘,了解spring内在运行逻辑

    SpringBatch+Spring+Mybatis+MySql (spring batch 使用jar)

    Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...

    spring配置 spring配置 spring配置 spring配置 spring配置

    spring配置 spring配置 spring配置 spring配置 spring配置

    Spring Cloud Gateway 整合 Spring Security 统一登录认证鉴权

    在构建分布式系统时,Spring Cloud Gateway 作为微服务架构中的边缘服务或 API 网关,扮演着至关重要的角色。它负责路由请求到相应的微服务,并可以提供过滤器功能,如限流、熔断等。而Spring Security 则是 Java ...

    Spring Framework 4.x Reference Documentation 中文翻译

    利用业余时间对此进行翻译,并在原文的基础上,插入配图,图文并茂方便用户理解。如有勘误欢迎指正,点此提问。如有兴趣,也可以参与到本翻译工作中来 :) 从目录开始阅读吧 Contact: Blog:www.waylau.com Gmail: ...

    spring3.0.5 所有jar文件

    包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...

    Getting started with Spring Framework: covers Spring 5(epub)

    Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...

    spring类库 spring类库

    Spring框架是Java开发中不可或缺的一部分,它以其模块化、松耦合和强大的功能特性而闻名。这个"spring类库"包含的资源可以帮助开发者快速搭建基于Spring的项目环境。以下是对Spring框架及其核心组件的详细解释。 ...

    spring4.3.1官方全套jar包下载

    spring4.3.1全套jar下载。 4.3.1/spring-aop-4.3.1.RELEASE.jar 4.3.1/spring-aspects-4.3.1.RELEASE.jar 4.3.1/spring-beans-4.3.1.RELEASE.jar 4.3.1/spring-context-4.3.1.RELEASE.jar 4.3.1/spring-core-4.3.1....

    spring3.1 官方全部jar包

    spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....

    spring-framework-4.3.16.RELEASE-dist

    最新 spring mvc 资源,最新 spring mvc 资源,最新 spring mvc 资源,最新 spring mvc 资源,最新 spring mvc 资源,最新 spring mvc 资源,最新 spring mvc 资源,最新 spring mvc 资源,最新 spring mvc 资源,...

    spring 4.3.14(全)最新的spring4正式版

    Spring 框架是 Java 开发中的一个核心组件,它为构建企业级应用程序提供了全面的编程和配置模型。Spring 4.3.14 是该框架的最后一个4.x系列正式版,发布于2018年2月24日。这个版本在Spring 5.0发布之前提供了一个...

    Spring cloud与Spring boot 集成完整案例

    Spring Cloud和Spring Boot是两个非常重要的Java开发框架,它们在微服务架构中扮演着核心角色。Spring Boot简化了创建独立的、生产级别的基于Spring的应用程序的过程,而Spring Cloud则为开发者提供了快速构建分布式...

    spring-context.jar

    spring-context-1.2.8.jar, spring-context-1.2.9.jar, spring-context-2.0-m2.jar, spring-context-2.0.1.jar, spring-context-2.0.2.jar, spring-context-2.0.4.jar, spring-context-2.0.6.jar, spring-context-...

Global site tag (gtag.js) - Google Analytics