当前位置: 首页 > ops >正文

JavaSenderMail发送邮件(QQ及OFFICE365)

前言

这是今天处理的公司安排的一个任务:客户系统发送offices365邮件报错535

之前没怎么解除邮件业务,于是先搭个简单的QQ邮件Demo熟悉一下吧,没有啥公网内网的麻烦(之前听说有内网限制,我还处理了一些环境上的问题)。发送的话就直接用现成的MagicAPI项目吧,就不用Postman了。

什么是SMTP,IMAP,TLS

SMTP(简单邮件传输协议):用于将邮件从发件人客户端发送到收件人服务器,也可以在邮件服务器之间转发

IMAP(网络邮件/消息访问协议):就是用来收/读邮件的

TLS(传输层安全协议):对传输的邮件进行加密的

一,引入依赖

不用传统的JavaMail了,直接用SpingBoot提供的mail-starter,简单方便;

      <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>org.ssssssss</groupId><artifactId>magic-api-spring-boot-starter</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.ssssssss</groupId><artifactId>magic-api-plugin-task</artifactId><version>2.1.1</version></dependency>

二,前往QQ邮箱设置,根据要求获取配置信息,开通SMTP服务及获取授权码

三,编辑配置信息及发送通用类

  不同的邮件服务器复用下面这个格式模板就可以了

   host: smtp.qq.com
#    port: 465
#    username: 1034522247@qq.com
#    password: gxytmhufdfuouohhhs
#    properties:
#      mail:
#        smtp:
#          auth: true
#          ssl:
#            enable: true

主类:写了一个工具类,将这个类交给Spring管理后,可以直接在Magic平台引入使用。这个比较简单,就几个固定步骤;

MimeMessage就是一个用来构建复杂邮件对象的类,简单邮件可以用SimpleMailMessage

MimeMessageHelper可以看作一个辅助类,它可以简化MimeMessage构建邮件对象的过程,只需要set..... (传入原对象,true表示允许添加附件等邮件多个部分,并设置编码)

import javax.mail.internet.MimeMessage;
@Slf4j
@Component("mailUtil")
public class MailUtil {@Autowiredprivate JavaMailSender mailSender;public boolean sendMail(String from, String to, String subject, String content) {try {MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");helper.setFrom(from);helper.setTo(to);helper.setSubject(subject);helper.setText(content, true); // true表示HTML格式mailSender.send(message);log.info("邮件发送成功!");return true;} catch (Exception e) {log.error("邮件发送失败!{}",e.getMessage());e.printStackTrace();return false;}}
}

四,调试,启动项目后,打开Magic地址,添加接口后及可以写接口请求了,如

import com.example.magicapi.utils.MailUtil
import 'com.example.magicapi.utils.MailUtil' as MailUtil;Boolean res = MailUtil.sendMail("193485147@qq.com","2279175873@qq.com","垃圾邮件","这是垃圾邮件"
);if (res){return "发送成功";
}else{return "发送失败"
}

五,踩坑点

发送OFFICE365邮件也是同样的道理,一套模板就可以了,这个问题的两个主要点是:

1,密码那块必须是服务器生成的授权码,不是其他的啥密码,公司这个问题就是很久没解决,今天算是交给新人的我了。一直跟我说的是客户说密码没错,我也是验证了好久才确定就是授权码的问题,客户重新开了个账号才好

2,用户名问题,我自己搭建的测试环境用新账号发邮件后是没问题的,但是回到公司的系统上发的时候,还是365问题,于是只能去debug一堆代码了,头疼。d着d着我才想起来一件事,用户名必须是完整的邮箱账号啊,公司配置的连域名都没带,我还按着系统的错误去debug了,噗,改正之后,终于是可以发送成功了。看迷糊了,哈哈。

http://www.xdnf.cn/news/7613.html

相关文章:

  • 如何使用通义灵码玩转Python - AI编程助手提升效率
  • 【工具变量】地级市健康城市试点政策数据集(2007-2024年)
  • 香港科技大学广州香港科技大学硕博士研究生学位项目宣讲会(智能制造硕博士物理学硕士)—深圳大学专场
  • 大模型从基础到入门 记录
  • 测试W5500的第3步_使用ioLibrary库创建TCPServer
  • [特殊字符] jQuery 响应式瀑布流布局插件推荐!
  • 2025年JIII SCI1区TOP,多策略霜冰优化算法IRIME+无人机路径规划,深度解析+性能实测
  • [创业之路-370]:企业战略管理案例分析-10-战略制定-差距分析的案例之小米
  • AI大模型从0到1记录学习 大模型技术之数学基础 day26
  • AR0144CSSC20SUKA0-CRBR——1/4英寸 1.0 MP 高性能CMOS图像传感器解析
  • 多路视频直播用在线云导播切换的效果测试
  • [春秋云镜] Spoofing仿真场景
  • 软考软件测评师——系统安全设计(防火墙技术)
  • 每日一题:1、虚拟IPv4地址转换为32位整数(JS)
  • 你知道mysql的索引下推么?
  • 【办公类-18-04】(Python)“验血单信息”批量生成打印(学校、班级、姓名、性别)
  • 三色光源投影暗战:FSHD 如何撕开 DLP/3LCD 垄断缺口?
  • Ubuntu软件仓库与更新源配置指南
  • 系统架构设计(十六):敏感点、权衡点、风险点和非风险点
  • 手动导出Docker进行并自动执行脚本命令的操作方法
  • vue3中使用Element-Plus的几种方式
  • 汉得集星獭1.8.0正式发布,高效集成再赋能!
  • 《算法笔记》11.4小节——动态规划专题->最长公共子序列(LCS) 问题 A: 最长公共子序列
  • 动态规划-LCR 090.打家劫舍II-力扣(LeetCode)
  • 文档债务拖累交付速度?5大优化策略文档自动化
  • 电子电器架构 --- 汽车高性能计算
  • 【踩坑】WUDFHost占用内存高的可能原因
  • 工作流引擎-01-Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎,支持现实世界的流程自动化需求
  • 深入解析 OpenManus:开源 AI 智能体框架的技术原理与实践
  • 分钟级降水预报API:精准预测每一滴雨的智慧科技