【Java】【Hutool】从零开始实现发送邮件功能

news2024/11/10 19:04:55

采用Hutool工具实现发送邮件,可以访问Hutool官网

引言:从零开始,实现一个基本功能,邮件发送

第一步:打开idea,新建maven工程,引入依赖,如下:
   <dependencies>
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.22</version>
        </dependency>

    </dependencies>
第二步,创建一个邮箱对象,如下
@Data
@NoArgsConstructor
@AllArgsConstructor
public class EmailInfo {

    /**
     * 邮箱账户
     */
    private String emailAccount;

    /**
     * 邮箱密码
     */
    private String emailPassword;

    /**
     * 发件人名称
     */
    private String senderName;


    /**
     * 发件服务器
     */
    private String sendServer;

    /**
     * 发件服务器是否遵循安全协议(0,不是 1是,默认0)
     */
    private Integer sendServerIsSSL = 0;

    /**
     * 发件服务器端口(一般是若sendServerIsSSL = 1,端口则是25,若不是,则为465)
     */
    private Integer sendPort;

}

最后开始写一个main程序测试。前提是需要登陆相关邮箱,开通相关服务,这里以qq邮箱为例,登录qq邮箱,然后打开设置

在这里插入图片描述

进入之后,继续进入,一直下拉到最下面

在这里插入图片描述

找到下图这里,然后开通,smtp协议,会给你一个授权码,作为你的密码,然后才能发的,否则会报未授权的错误

在这里插入图片描述

开通后,要注意上面邮箱实体类中的提示取值哦。

因为qq是遵循安全协议的ssl = 1,所以设置的端口选择:465

最终的程序,大家自行提取里面的方法
public class SendEmailDemo {
    public static void main(String[] args) {
        EmailInfo info = new EmailInfo();
        info.setEmailAccount("你得邮箱");
        info.setEmailPassword("开通smtp协议的授权码,后面有教程");
        info.setSendPort(465);
        info.setSendServer("smtp.qq.com"); //遵循stmp的服务协议的服务器,可以百度,很多的
        info.setSenderName("发送人名称");
        info.setSendServerIsSSL(1);
        MailAccount account = getMailAccount(info);
        MailUtil.send(account,info.getEmailAccount(),"邮件服务测试","邮件服务测试成功",false);
    }

    
    /**
     * 获取邮箱参数对象
     *
     * @param emailInfo
     * @return
     */
    private static MailAccount getMailAccount(EmailInfo emailInfo) {
        MailAccount account = new MailAccount();

        if (ObjectUtil.isNotEmpty(emailInfo.getSenderName())) {
            StringBuilder sb = new StringBuilder();
            sb.append(emailInfo.getSenderName())
                    .append('<')
                    .append(emailInfo.getEmailAccount())
                    .append('>');
            account.setFrom(sb.toString());
        } else {
            account.setFrom(emailInfo.getEmailAccount());
            account.setUser(emailInfo.getEmailAccount());
        }
        account.setPass(emailInfo.getEmailPassword());
        account.setHost(emailInfo.getSendServer());
        account.setPort(emailInfo.getSendPort());
        account.setAuth(true);
        account.setSocketFactoryClass("javax.net.ssl.SSLSocketFactory");
        account.setSocketFactoryFallback(true);
        account.setSocketFactoryPort(emailInfo.getSendPort());
        if (emailInfo.getSendServerIsSSL() == 0) {
            account.setSslEnable(false);
        } else {
            account.setSslEnable(true);
        }
        account.setTimeout(3000);
        return account;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1322124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电力智能运维管理系统

电力智能运维管理系统是一种基于先进的信息技术、自动化技术和智能控制技术&#xff0c;针对电力行业的特殊需求而开发的一种全面综合性管理系统。 依托电易云-智慧电力物联网&#xff0c;该系统以实时监测、高效运维、远程控制的方式&#xff0c;将各类数据信息及时采集、处理…

【Maven-Helper】利用 Maven-Helper 解决依赖冲突问题

【Maven-Helper】利用 Maven-Helper 解决依赖冲突问题 1&#xff09;安装 Maven-Helper 插件2&#xff09;Maven Helper 插件使用方法3&#xff09;Idea-Maven 可视化依赖树 1&#xff09;安装 Maven-Helper 插件 这里我们已经安装过了&#xff0c;如果没有安装过&#xff0c;点…

银行测试:第三方支付平台业务流,功能/性能/安全测试方法

1、第三方支付平台的功能和结构特点 在信用方面&#xff0c;第三方支付平台作为中介&#xff0c;在网上交易的商家和消费者之间作一个信用的中转&#xff0c;通过改造支付流程来约束双方的行为&#xff0c;从而在一定程度上缓解彼此对双方信用的猜疑&#xff0c;增加对网上购物…

【Mac】flutter项目集成高德定位SDK,获取key

一、获取调试版安全码SHA1 1.进入当前用户文件夹下的~/.android目录 cd ~/.android2.查看 debug.keystore ls3.运行 debug.keystore keytool -list -v -keystore debug.keystore这里报错&#xff1a; The operation couldn’t be completed. Unable to locate a Java Runt…

老照片翻新修复软件有哪些?带你了解这5个

老照片翻新修复软件有哪些&#xff1f;随着时间的流逝&#xff0c;许多珍贵的老照片可能因为各种原因而受损。幸运的是&#xff0c;现在有一些软件可以帮助我们恢复这些珍贵的回忆。下面是一些值得推荐的修复老照片的软件。 1.迅捷抠图 这是一款功能强大的电脑端软件&#xff…

v0.12.0-敏感词/脏词词标签能力进一步增强

拓展阅读 敏感词工具实现思路 DFA 算法讲解 敏感词库优化流程 java 如何实现开箱即用的敏感词控台服务&#xff1f; 各大平台连敏感词库都没有的吗&#xff1f; v0.10.0-脏词分类标签初步支持 v0.11.0-敏感词新特性&#xff1a;忽略无意义的字符&#xff0c;词标签字典 …

化工企业人员定位解决方案,人员定位系统源码

行业背景 1、人车位置不精准&#xff1a;无法实时查看内外部人员和车辆的精准位置&#xff0c;遇到突发安全事故&#xff0c;无法及时确认人员位置并制定有效的救援方案。 2、作业安全保障弱&#xff1a;难以管控人员和车辆非法进入重大危险源区域、高危装置区、特殊作业区、罐…

深入了解Linux信号:作用、产生、捕捉和阻塞

这里写目录标题 引言1. 信号的基本概念1.1 信号的分类和编号&#xff1a;1.2 查看信号默认处理动作1.3 信号的作用1.4 信号的产生1.4.1通过终端按键产生1.4.2通过系统函数向进程发信号1.4.3由软件条件产生信号1.4.4硬件异常产生信号 2. 常见信号及其作用SIGINT (2) - 中断信号&…

你对葡萄酒中的亚硫酸盐是不是有误解呢?

亚硫酸盐不会让某些人对酒产生不良的反应首先&#xff0c;让我谈谈欧洲生产的葡萄酒不含亚硫酸盐的观点&#xff0c;这在很大程度上是一种误解。虽然我听说过某些生产商在酿造葡萄酒时不添加亚硫酸盐&#xff0c;但这些确实是例外&#xff0c;添加亚硫酸盐是世界公认的酿酒传统…

如何通过MT-Bench评估大模型

如何评估LLM在开放性问题的回答能力 前面三篇博客中介绍了如何评估大模型&#xff0c;内容包括评估大模型时常用的指标&#xff0c;每个指标背后的含义&#xff0c;如何通过编写代码实现指标的收集。对于passk指标&#xff0c;还进行了专门的说明。在前面的博客中&#xff0c;我…

【PC端查看PDA扫描结果】

1、生成条形码 https://www.gaitubao.com/barcode 2、打开Android Studio 进行下图这样配置&#xff0c;那么就能看到pda扫描的数据了 Decoding result&#xff1a;

Jenkins插件安装失败时这么做就搞定啦!

1.网络或墙的问题导致插件下载安装失败 这种错误提示很明显&#xff0c;就是无法连接到插件下载地址&#xff0c;导致插件下载失败。 解决方法 为Jenkins更换源 点击Jenkins主页面左侧列表中【系统管理】—— 下拉找到【管理插件】 选择【高级】选项卡 替换最下方【升级站点…

PTFE四氟托盘应用于化工、医药、食品行业

PTFE托盘是一种广泛应用于化工、医药、食品等行业的特种托盘&#xff0c;采用聚四氟乙烯&#xff08;PTFE&#xff09;材料制造而成。PTFE是一种具有出色耐腐蚀性、高温稳定性和优异物理特性的材料。 PTFE托盘在化工领域中被广泛应用&#xff0c;主要用于处理腐蚀性的化学物质。…

【极客公园 IF 2024】李彦宏:AI-native时代,需要怎样的产品和开发者

文章目录 01 卷 AI 原生应用才有价值&#xff0c;大模型进展 对 多数人不是机会02 大公司代表落后生产力&#xff0c;千万不要看大公司在干嘛03 搜索本身也在进化&#xff0c;有机会变成全新的产品04 用生成式AI改造现有业务&#xff0c;可以创造更大价值05 创业公司能做出三五…

LeetCode刷题--- 全排列 II

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述递归递归、搜…

【微服务架构】——hystrix基础知识

文章目录 一、Hystrix是什么&#xff1f;二、为什么要使用Hystrix&#xff1f;三、在哪用&#xff1f;什么时候用&#xff1f;四、Hystrix是如何实现自动服务降级和服务熔断的呢&#xff1f; 一、Hystrix是什么&#xff1f; Hystrix是一个用于处理分布式系统的延迟和容错的开源…

智慧安防视频监控可视化平台EasyCVR调用接口返回“Unauthorized”是什么原因?

智慧安防视频监控可视化平台EasyCVR采用了开放式的网络结构&#xff0c;平台能在局域网、公网、专网等复杂的网络环境中&#xff0c;将场景中分散的海量网络监控设备进行统一接入与汇聚管理&#xff0c;并能提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云…

在 Windows PC 上轻松下载并安装 FFmpeg

FFmpeg 是一种开源媒体工具&#xff0c;可用于将任何视频格式转换为您需要的格式。该工具只是命令行&#xff0c;因此它没有图形、可点击的界面。如果您习惯使用常规图形 Windows 程序&#xff0c;安装 FFmpeg 一开始可能看起来很复杂&#xff0c;但不用担心&#xff0c;它;很简…

xhr请求是什么?

1、什么是xhr请求&#xff1f; xhr&#xff0c;全称为XMLHttpRequest&#xff0c;用于与服务器交互数据&#xff0c;是ajax功能实现所依赖的对象&#xff0c;jquery中的ajax就是对 xhr的封装。 XHR&#xff08;XMLHttpRequest&#xff09;请求是一种在浏览器中发送HTTP请求的…

互式流程图|BPMN JointJS+ JavaScript 3.7.3 Crack

JointJS 是 JavaScript 图表库为卓越的 UI 提供支持 使用经过验证的库快速、自信地构建高级视觉和无代码/低代码应用程序。 赋能全球行业领导者 使用 JointJS 构建的图表 一个库&#xff0c;‍无限 UI 选项 直接在您的应用程序中享受交互式流程图、BPMN 和其他图表工作室。利用…