`

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的十二种技巧

    动力节点老杜Spring6,配套笔记PDF文件

    动力节点老杜Spring6配套笔记主要讲解了Spring框架的一些核心概念和最佳实践,特别是针对代码设计中的开闭原则(Open-Closed Principle, OCP)进行了深入探讨。在给出的代码示例中,我们可以看到一个简单的用户登录...

    夏昕(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 ...

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

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

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

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

    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框架及其核心组件的详细解释。 ...

    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....

    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....

    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整合rabbitmq需要的jar包(spring版本4.2.0)

    在IT行业中,Spring框架是Java应用开发中的一个关键组件,它提供了一整套服务来简化企业级应用的构建。RabbitMQ则是一个流行的开源消息队列系统,它基于AMQP(Advanced Message Queuing Protocol)协议,用于高效地...

Global site tag (gtag.js) - Google Analytics