SpringBoot实现发送邮件、发送微信公众号推送

文章目录

  • SpringBoot实现发送邮件、发送微信公众号推送
    • SpringBoot实现发送邮件
      • pom.xml
      • application.yml
      • 代码实现
    • SpringBoot实现发送微信公众号推送
      • pom.xml
      • 代码实现

SpringBoot实现发送邮件

  JavaMailSender是Spring封装的邮件发送封装类,支持普通文本、附件、html等格式。

pom.xml

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

application.yml

  我们这里用QQ邮箱发送邮件作为例子,首先需要在QQ邮箱中开启POP3/SMTP,获得授权码。
  需在application.yml中加入的配置如下:

spring:mail:host: smtp.qq.comusername: xxxxxxxx@qq.com# 这个不是QQ密码,而是自己邮箱-账户-开启POP3/SMTP时的客户端授权码password: xxxxxxxxxdefault-encoding: utf-8protocol: smtpproperties:mail:smtp:auth:starttls:# 需要TLS认证 保证发送邮件安全验证enable: truerequired: true

代码实现

  带附件的格式发送邮件需要借助JavaMailSender对象的createMimeMessage()方法创建的实例MimeMessage作为发送对象,而设置邮件参数通过MimeMessageHelper对象完成。
  我们创建EmailUtil工具类,在其中定义sendMail方法进行邮件发送,EmailUtil完整代码如下:

@Component
public class EmailUtil {@Value("${spring.mail.username}")private String from;@Resourceprivate JavaMailSender javaMailSender;public boolean sendMail(String email, String subject, String text) {MimeMessage mimeMessage = javaMailSender.createMimeMessage();try {MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);// 设置发件人mimeMessageHelper.setFrom(from);// 设置收件人mimeMessageHelper.setTo(email);// 设置邮件主题mimeMessageHelper.setSubject(subject);// 设置发送的文本信息mimeMessageHelper.setText(text);javaMailSender.send(mimeMessage);return true;} catch (MessagingException e) {e.printStackTrace();return false;}}
}

  这里对成员变量JavaMailSender使用了@Resource注解。@Resource注解和@Autowired注解类似,都用来声明需要自动装配的bean,区别在于@Autowired是类型驱动的注入,而@Resource是名称驱动的注入,所以前者存在多bean问题,而后者,只要保证bean命名唯一就不会出现多bean的问题。

SpringBoot实现发送微信公众号推送

  我们需要登录微信公众号测试平台,获取appID和appsecret,并在模板消息接口中新建模板,获得模板ID:

  然后让需要接收信息推送的人都关注测试公众号:

  这样我们就能得到关注了此公众号的用户的openid(微信号):

pom.xml

  这里我们使用微信模版消息推送三方sdk:

        <dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>3.3.0</version></dependency>

代码实现

@Component
public class WxUtils {private Logger log = LoggerFactory.getLogger(getClass());public String sendMessage(String title, String message, String userOpenId) {//1,配置WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();// 设置appId和secretwxStorage.setAppId("xxxxxx");wxStorage.setSecret("xxxxxxxxx");WxMpService wxMpService = new WxMpServiceImpl();wxMpService.setWxMpConfigStorage(wxStorage);// 设置消息模板的templateIDString messageTemplateId = "xxxxxxxxxxx";//2,推送消息WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder().toUser(userOpenId) // 要推送的用户openid.templateId(messageTemplateId) // 模版id
//                .url("https://www.xxxxx.com/xxxxxx/") // 这里可以设置用户点击模版消息后,跳转访问的网址.build();//3,这里配置推送信息的标题和内容,以及它们的文字颜色templateMessage.addData(new WxMpTemplateData("title", title, "#FF00FF"));templateMessage.addData(new WxMpTemplateData("message", message, "#FF00FF"));try {wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);log.info("微信消息推送成功,消息标题:{},消息内容:{},推送给的用户openid:{},模板id:{}",title, message, userOpenId, messageTemplateId);return "推送成功";} catch (Exception e) {log.error("推送失败:{},消息标题:{},消息内容:{},推送给的用户openid:{},模板id:{}", e.getMessage(),title, message, userOpenId, messageTemplateId);return "推送失败";}}
}

  各个配置项例如appId和secret等都需要在application.yml中配置,然后用@Value注解将我们配置文件的属性读出来,我这里是偷懒了

SpringBoot实现发送邮件、发送微信公众号推送相关推荐

  1. 微信公众号推送消息前期准备

    微信公众号推送消息使用手册 1.准备 ​ 微信公众平台注册公众号.(https://mp.weixin.qq.com/) ​ 公众号进行"微信认证" ​ 开通"订阅通知& ...

  2. Java微信公众号推送消息

    Java微信公众号推送消息 1.导入pom文件 2.编写yml文件 3.配置文件 4.配置bean 5.service 模板消息主要代码 6.外放接口测试 ==注:== 1.控制台报40164,解决方 ...

  3. python爬虫公众号_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

  4. 微信公众号推送课表及天气(事无巨细+JavaScript版+python版)

    微信公众号推送课表及天气 22.10.16更新 我已经做出来更优秀的直接在聊天列表中推送的了! 请移步 企业微信推送 超强版! 基础 简介 作者:申也 个人网站:申也个人网站(www.dongshen ...

  5. 【设计模式】之观察者模式——简单的“微信公众号推送消息给相关用户”

    目录 一.简单介绍 二.观察者模式涉及的4个角色 三.观察者模式demo:简单的"微信公众号推送消息给相关用户" 一.简单介绍 定义对象间"一对多"的依赖关系. ...

  6. 从中国微信500强月报总结微信公众号推送从中国微信500强月报总结微信公众号推送

    从中国微信500强月报总结的微信公众号推送. 新榜观察全样本中11月有过推文的账号发现,每百个公众号中会有19个整月全勤"营业".其中,民生.体娱.文化类账号居多,他们的认证比例. ...

  7. python微信爬取教程_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

  8. python微信公众号推送_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

  9. (传送门)微信公众号推送文章(个人认为未来可能对我有用的部分)

    前言 很多时候偶然间在微信看到关注的技术性公众号推送的一些文章,但是往往一时没有闲暇去细细品读,所以还是储存下来,方便后面慢慢看吧. Content RxHttp:新一代Android网络请求神器,一 ...

最新文章

  1. 一文看懂Modbus协议
  2. csp2020 j2民间数据下载_华为麒麟 990 5G 下载速率领先
  3. 由浅到浅入门批量渲染(三)
  4. 控件属性、事件持久化(转)
  5. Qt定时器QBasicTimer、startTimer、QTimer使用总结
  6. PrimeFaces Extensions中的全新JSF组件
  7. 函数参数的值传递和地址传递
  8. React Native开发指南-在原生和React Native间通信
  9. 6款html5模板下载
  10. mysql 高可用架构 proxysql 之一 yum安装
  11. Ubuntu 分卷压缩和解压
  12. 3个开源TTS(二)eSpeak的简要分析使用
  13. Mysql 语句执行顺序
  14. idea无法切换成中文
  15. 如何删除下一页分节符_Word中批量删除分节符的方法
  16. 74.【JavaWeb -02】
  17. 运行 vue-typescript-admin-template 报错 error Command failed with signal “SIGABRT“. 切换node版本
  18. Mac 如何在终端玩游戏
  19. WHQL认证环境部署攻略四  结果查看测试报告
  20. raise TypeError(f‘Object of type {o.__class__.__name__} ‘ TypeError: Object of type bytes is not

热门文章

  1. java的Url和Html编码解码
  2. 图计算的种类和应用场景
  3. 关于前后端分离 的腹黑意淫
  4. SQL入门练习(一)
  5. 如何去掉el-input自带边框
  6. 《加州消费者隐私法案》(CCPA)解读四:违反CCPA,企业会面临什么处罚?
  7. AD9680+JESD204B接口+FPGA FMC高速率数据采集板卡
  8. MATLAB:修改界面左上角Logo图标
  9. mybatis-plus wrapper gt lt ge le的用法
  10. 区块链钱包有哪些?kinmall:它能成为区块链行业的支付宝...