SpringBoot实现发送邮件、发送微信公众号推送
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.准备 微信公众平台注册公众号.(https://mp.weixin.qq.com/) 公众号进行"微信认证" 开通"订阅通知& ...
- Java微信公众号推送消息
Java微信公众号推送消息 1.导入pom文件 2.编写yml文件 3.配置文件 4.配置bean 5.service 模板消息主要代码 6.外放接口测试 ==注:== 1.控制台报40164,解决方 ...
- python爬虫公众号_python爬虫_微信公众号推送信息爬取的实例
问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...
- 微信公众号推送课表及天气(事无巨细+JavaScript版+python版)
微信公众号推送课表及天气 22.10.16更新 我已经做出来更优秀的直接在聊天列表中推送的了! 请移步 企业微信推送 超强版! 基础 简介 作者:申也 个人网站:申也个人网站(www.dongshen ...
- 【设计模式】之观察者模式——简单的“微信公众号推送消息给相关用户”
目录 一.简单介绍 二.观察者模式涉及的4个角色 三.观察者模式demo:简单的"微信公众号推送消息给相关用户" 一.简单介绍 定义对象间"一对多"的依赖关系. ...
- 从中国微信500强月报总结微信公众号推送从中国微信500强月报总结微信公众号推送
从中国微信500强月报总结的微信公众号推送. 新榜观察全样本中11月有过推文的账号发现,每百个公众号中会有19个整月全勤"营业".其中,民生.体娱.文化类账号居多,他们的认证比例. ...
- python微信爬取教程_python爬虫_微信公众号推送信息爬取的实例
问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...
- python微信公众号推送_python爬虫_微信公众号推送信息爬取的实例
问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...
- (传送门)微信公众号推送文章(个人认为未来可能对我有用的部分)
前言 很多时候偶然间在微信看到关注的技术性公众号推送的一些文章,但是往往一时没有闲暇去细细品读,所以还是储存下来,方便后面慢慢看吧. Content RxHttp:新一代Android网络请求神器,一 ...
最新文章
- 一文看懂Modbus协议
- csp2020 j2民间数据下载_华为麒麟 990 5G 下载速率领先
- 由浅到浅入门批量渲染(三)
- 控件属性、事件持久化(转)
- Qt定时器QBasicTimer、startTimer、QTimer使用总结
- PrimeFaces Extensions中的全新JSF组件
- 函数参数的值传递和地址传递
- React Native开发指南-在原生和React Native间通信
- 6款html5模板下载
- mysql 高可用架构 proxysql 之一 yum安装
- Ubuntu 分卷压缩和解压
- 3个开源TTS(二)eSpeak的简要分析使用
- Mysql 语句执行顺序
- idea无法切换成中文
- 如何删除下一页分节符_Word中批量删除分节符的方法
- 74.【JavaWeb -02】
- 运行 vue-typescript-admin-template 报错 error Command failed with signal “SIGABRT“. 切换node版本
- Mac 如何在终端玩游戏
- WHQL认证环境部署攻略四 结果查看测试报告
- raise TypeError(f‘Object of type {o.__class__.__name__} ‘ TypeError: Object of type bytes is not