专栏首页菩提树下的杨过spring-boot 速成(10) -【个人邮箱/企业邮箱】发送邮件

spring-boot 速成(10) -【个人邮箱/企业邮箱】发送邮件

发邮件是一个很常见的功能,代码本身并不复杂,有坑的地方主要在于各家邮件厂家的设置,下面以qq个人邮箱以及腾讯企业邮箱为例,讲解如何用spring-boot发送邮件:

一、添加依赖项

compile 'org.springframework.boot:spring-boot-starter-mail'

二、application.yml配置

2.1 QQ个人邮箱

spring:
  application:
    name: mail-demo
  mail:
    host: smtp.qq.com
    username: xxxx@qq.com # 这里填写个人的qq邮箱
    password: ***** # 注:这里不是qq邮箱的密码,而是授权码
    properties:
      mail.smtp.auth: true
      mail.smtp.starttls.enable: true
      mail.smtp.starttls.required: true

生成授权码的方法参考下图:

2.3 QQ企业邮箱

spring:
  application:
    name: mail-demo
  mail:
    host: smtp.exmail.qq.com
    username: xxxx@puscene.com # 这里填写企业邮箱
    password: **************** # 这里填写企业邮箱登录密码
    properties:
      mail.smtp.auth: true
      mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
      mail.smtp.socketFactory.fallback: false
      mail.smtp.socketFactory.port: 465  

 企业邮箱如果未开启安全登录,就不需要授权码了,直接填写登录密码即可。如果开启了安全登录,参考下图:

则password这里,需要填写客户端专用密码

三、 发送代码示例

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

/**
 * Created by 菩提树下的杨过 on 12/08/2017.
 */
@SpringBootApplication
public class MailDemo {

    public static void main(String[] args) {
        
        ConfigurableApplicationContext context = SpringApplication.run(MailDemo.class, args);
        JavaMailSender mailSender = context.getBean(JavaMailSender.class);

        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("菩提树下的杨过<xxxxxxxx@xxx.com>"); //注意这里的发送人邮箱,要与yml配置中的username相同,否则验证不通过

        message.setTo("xxx@126.com");
        String[] ccList = new String[]{"xxxx@126.com", "yang.junming@xxxx.com"};//这里添加抄送人名称列表
        message.setCc(ccList);
        String[] bccList = new String[]{"yyyy@126.com", "yjmyzz@xxxx.com"};//这里添加密送人名称列表
        message.setBcc(bccList);
        message.setSubject("主题:简单邮件(QQ个人邮件)-抄送,密送测试");
        message.setText("测试邮件内容");
        mailSender.send(message);
        System.out.println("发送成功!");
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ActiveMQ笔记(2):基于ZooKeeper的HA方案

    activemq官网给出了3种master/slave的HA方案,详见:http://activemq.apache.org/masterslave.html ...

    菩提树下的杨过
  • ActiveMQ笔记(2):基于ZooKeeper的HA方案

    activemq官网给出了3种master/slave的HA方案,详见:http://activemq.apache.org/masterslave.html ...

    菩提树下的杨过
  • 利用Lucene打造站内搜索引擎的思路

    1.为什么要用Lucene,而不用直接从数据库里搜索记录? 主要是考虑到几个因素:(1)性能问题,Lucene是基于文件索引的搜索机制,性能要比数据库里检索更...

    菩提树下的杨过
  • spring开发_spring+hibernate

    http://www.cnblogs.com/hongten/gallery/image/112469.html

    Hongten
  • Python实现十大经典排序算法

    由于数组小,且范围在1到10之间,这其实对于计数排序这种非比较类算法是比较友好的,因为没有多大的空间压力,因此计数排序速度第一很容易理解,而之所以选择、插入比希...

    HoLoong
  • MyBatis 二级缓存详解

    我们在上一篇文章介绍了 MyBatis 的一级缓存的作用,如何开启,一级缓存的本质是什么,一级缓存失效的原因是什么?MyBatis 只有一级缓存吗?来找找答案吧...

    cxuan
  • MyBatis 二级缓存详解

    我们在上一篇文章介绍了 MyBatis 的一级缓存的作用,如何开启,一级缓存的本质是什么,一级缓存失效的原因是什么?MyBatis 只有一级缓存吗?来找找答案吧...

    纯洁的微笑
  • jvm之Java内存区域与内存溢出异

    作者对比c++和java ,指出相比c++ ,Java 编程不需要开发者自己管理创建对象的内存,因为借助jvm的自动管理内存机制的帮助,开发人员可以不考虑这些...

    猎户星座1
  • 苹果震荡:曾经的二号人物、薪资最高的奢侈品“女魔头”、零售SVP离职

    她曾任巴宝莉(Burberry)CEO,被形容为来自时尚界的“女魔头”;她加盟苹果之后,iPhone逐渐变身奢侈品。

    量子位
  • TP入门第六天

    1、模型 模型类一般位于项目的Lib/Model目录下面,当我们创建一个UserModel类的时候,其实已经遵循了系统的约定。模型类的命名规则是除去表前缀的数据...

    苦咖啡

扫码关注云+社区

领取腾讯云代金券