【Spring】JavaMailSender Spring自带的邮件推送功能实现

备注:JavaMailSender在spring-context-support.jar中

1.配置spring-mail.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- spring mail begin ############################################## -->
    <bean id="configurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
         <list>
            <value>/mail.properties</value>
         </list>
      </property>
    </bean>
    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
    <bean id="MailSenderDemo" class="com.zlg.test.springmail.MailSenderDemo"></bean>
    <!-- spring mail demo end ############################################## -->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
       <property name="host" value="${mail.host}"></property>
       <property name="port" value="${mail.port}"></property>
       <property name="username" value="${mail.username}"></property>
       <property name="password" value="${mail.password}"></property>
       <property name="javaMailProperties">
           <props>
              <prop key="mail.smtp.auth">true</prop>
              <prop key="mail.smtp.timeout">25000</prop>
              <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
              <!-- 如果是网易邮箱, mail.smtp.starttls.enable 设置为 false-->
              <prop key="mail.smtp.starttls.enable">true</prop>
           </props>
       </property>
    </bean>
</beans>
mail.smtp.socketFactory.class 加上该配置,避免出现认证错误

mail.properties
# qq mail server
#mail.protocol=smtp
#mail.port=465
#mail.host=smtp.exmail.qq.com
#[email protected]
#mail.password=

# 163 mail server
mail.protocol=smtp
mail.port=465
mail.host=smtp.163.com
[email protected]
mail.password=

2.web.xml中加入bean配置

<servlet>
        <servlet-name>provider</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                <!-- classpath:applicationContext.xml, -->
                <!-- classpath:applicationContext-servlet.xml, -->
                <!-- classpath:dubbo.xml, -->
                classpath:spring-mail.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>provider</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

3.pom.xml中加入jar包依赖

<!-- spring mail需要的jar包 -->
    <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context-support</artifactId>
         <version>4.2.6.RELEASE</version>
    </dependency>
    <dependency>
         <groupId>javax.mail</groupId>
         <artifactId>mail</artifactId>
         <version>1.4.7</version>
    </dependency>

4.编写Java接口文件

package com.zlg.test.springmail;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

/**
 * @Title: MailSenderDemo.java
 * @Package: com.zlg.test.springmail
 * @Description: spring mail 测试
 * @author: zlg
 * @date: 2017年6月20日 上午9:43:45
 * @version: V1.0
 */
public class MailSenderDemo {

    @Autowired
    private JavaMailSender mailSender;

    public void send(SimpleMailMessage mail) {
        mailSender.send(mail);
    }

    public JavaMailSender getMailSender(){
        return this.mailSender;
    }

}

5.添加测试类

package com.zlg.test.springmail;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

/**
 * @Title: SendTest.java
 * @Package: com.zlg.test.springmail
 * @Description: TODO
 * @author: zlg
 * @date: 2017年6月20日 上午10:03:36
 * @version: V1.0
 */
public class SendTest {

    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext(
                "spring-mail.xml");
        MailSenderDemo sender = (MailSenderDemo) ac.getBean("MailSenderDemo");
        /*SimpleMailMessage mail = new SimpleMailMessage();
        mail.setTo("[email protected]");// 收件人邮箱地址
        mail.setFrom("zlg");// 收件人
        mail.setSubject("SpringMailTest");// 主题
        mail.setText("测试Spring自带邮件发送功能");// 正文
        sender.send(mail);*/
        JavaMailSender javaMailSender = sender.getMailSender();
        MimeMessage mime = javaMailSender.createMimeMessage();
        MimeMessageHelper helper;
        try {
            helper = new MimeMessageHelper(mime, true, "utf-8");
            helper.setTo("[email protected]");// 收件人邮箱地址
            helper.setFrom("[email protected]");// 收件人
            helper.setSubject("SpringMailTest");// 主题
            helper.setText("测试Spring自带邮件发送功能");// 正文
        } catch (MessagingException me) {
            me.printStackTrace();
        }
        javaMailSender.send(mime);
    }

}

6.查看效果

时间: 2025-01-17 07:43:46

【Spring】JavaMailSender Spring自带的邮件推送功能实现的相关文章

阿里云邮件推送服务

提起邮件服务,最早之前一般自建邮件服务器,需要硬软件和运维的支持,稳定性也难保证,随着云服务的普及邮件推送功能的服务化是趋势,也省钱省事省心. 最早开始用过搜狐邮件服务,阿里云生态现在基本都出现了,我们来尝试一下阿里云的邮件推送服务: 一.阿里云控制台操作 首先在阿里云邮件推送控制台添加域名,然后在自己的dns服务器中添加如下的解析(根据控制台中的“配置”): 一个主机名为aliyundm的TXT记录,用于验证域名所有权 一个主机名为空.值为v=spf1 include:spf1.dm.aliy

Spring之WebSocket网页聊天以及服务器推送

Spring之WebSocket网页聊天以及服务器推送 转自:http://www.xdemo.org/spring-websocket-comet/ /Springframework /Spring之WebSocket网页聊天以及服务器推送 1. WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex). 2. 轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端

【初码干货】使用阿里云邮件推送服务架设自己邮件验证与推送体系

提示:阅读本文需提前了解的相关知识 1.电子邮件协议(http://baike.baidu.com/view/2367542.htm) 2.阿里云邮件推送(https://www.aliyun.com/product/directmail) 3.EDM(电子邮件营销)(http://baike.baidu.com/subview/1212416/8602812.htm) 4.SendCloud邮件服务(http://sendcloud.sohu.com/) 阅读目录结构 引: 一.需求分析 二.

用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇

在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还是很耐心的. 最终结论,是由于MailKit发送了两次EHLO命令,查看了MailKit源码后竟然发现,里面写了硬编码: if (host != "smtp.strato.de" && host != "smtp.sina.com") Ehlo (can

解决.NET Core中MailKit无法使用阿里云邮件推送服务的问题

在博问中(.net core怎么实现邮件发送)知道了MailKit无法使用阿里云邮件推送服务发送邮件的问题,自已实测也遇到同样的问题,而用自己搭建的邮件服务器没这个问题. 于是,向阿里云提交了工单...在提供了TCP抓包数据后,阿里云技术专员发现了问题所在:在认证通过后,MailKit发送了EHLO命令,然后才发送MAIL FROM命令,服务器在收到EHLO时会重置客户端的认证状态,所以后续的命令过来时,服务器认为客户端没有认证,于是报错“503 Bad sequence of commands

RedMine项目管理系统邮件推送设置(Windows环境)

RedMine项目管理系统有邮箱推送功能,当Bug,安全漏洞等内容被修改.解决.评论的时候,系统会通过邮件 及时的通知你的团队和客户.邮件通知的环节.形式.时间.接受人均可定制,功能十分实用. 下面是针对windows系统环境下安装的RedMine时,邮件推送的配置说明. (1)登录后点击[管理]-> [用户] (2)选中要收取邮件推送的用户登录名 (3)在[邮件通知]标签中的“不收取任何通知”改为“收取我的项目的所有邮件”,如下图所示 设定“收取我的项目的所有邮件”后保存即可. 另外,可以选的

如何做好网站邮件推送?

如何做好网站邮件推送? 关键词 文章的版权 洪哥写文章很苦逼,如果本文对您略有帮助,点击感兴趣的广告支持洪哥!万分感谢!本文属于“洪哥笔记”原创文章,转载请注明来源地址:如何做好网站邮件推送?:http://www.splaybow.com/post/seo-mail-delivery.html 摘要 <p>如何做好网站邮件推送?对于一个网站的推广而言,邮件推送是一个利器!定期给用户发送一些他们感兴趣的邮件,有利于提高用户的粘滞度.读了一篇Fimen写的文章,然后做一些自己的总结.<br

阿里云邮件推送及邮件发送测试

工具:域名(推荐二级域名).阿里云企业邮箱,开通及解析过程下文有记录 一.邮件推送 在域名解析处解析一个二级域名,用作邮件域名,如mail.danny.com(danny.com是主域名) 进入邮件推送控制台 上图是解析验证通过之后的截图 点击配置会提示如何配置解析 在域名解析处按照上图要求配置解析,返回点击验证通过即可 二.阿里云企业邮箱 点击链接注册购买免费企业邮箱 进入控制台企业邮箱设置解析,记得重置密码(邮箱密码) 添加如下设置(注意:此文档针对的是主域名文档,二级域名除了邮箱解析 im

jenkins持续集成Allure生成报表+邮件推送

本次基于<jenkins 生成HTML报表,邮件推送>的基础上将生成HTML报表修改为Allure生成报表,可以参考官方文档:https://docs.qameta.io/allure/#_jenkins 1.启动tomcat登录jenkins 2.Install the latest version of Allure Plugin from "Plugin Manager" page. 3.(1)Open Plugin Advanced Settings (at <