java实现Google邮箱SMTP协议

一、开通Google的SMTP协议

  • 在谷歌邮箱中开启IMAP访问

  •  到google的设置中开启两步验证功能

  • 在到 创建和管理应用专用密码

二、java中实现 

  • 引入maven 
        <!--邮件--><dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version></dependency>
  •  工具类
import javax.activation.DataHandler;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Properties;/*** @author LKX* @version 1.0* @Description* @date 2025-06-11 14:10*/
public class MailUtils {public static String USERNAME = "kexianglin261@gmail.com"; //	邮箱发送账号public static String PASSWORD = "hrnj tyoi mnie rodo"; //邮箱平台的授权码public static String HOST = "smtp.gmail.com"; // SMTP服务器地址public static String PORT = "587"; //SMTP服务器端口public static Session session = null;/*** 创建Sesssion*/public static void createSession() {if (session != null) return;Properties props = new Properties();props.put("mail.smtp.auth", "true");props.put("mail.smtp.starttls.enable", "true");props.put("mail.smtp.host", HOST); //SMTP主机名props.put("mail.smtp.port", PORT);session = Session.getInstance(props,new javax.mail.Authenticator() {protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(USERNAME, PASSWORD);}});}/*** 发送纯文本邮件,单人发送** @param title* @param content* @param toMail*/public static void postMessage(String title, String content, String toMail) {try {createSession();//构造邮件主体MimeMessage message = new MimeMessage(session);message.setSubject(title);message.setText(content);message.setFrom(new InternetAddress(USERNAME));message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(toMail));//发送Transport.send(message);} catch (MessagingException e) {throw new RuntimeException(e);}}/*** 发送带附件的邮件** @param title* @param content* @param fileName* @param filePath* @param toMail*/public void postMessageWithFile(String title, String content, String fileName, String filePath, String toMail) {try {createSession();//构造邮件主体MimeMessage message = new MimeMessage(session);message.setSubject(title);//邮件主体BodyPart textPart = new MimeBodyPart();textPart.setContent(content, "text/html;charset=utf-8");//邮件附件BodyPart filePart = new MimeBodyPart();filePart.setFileName(fileName);filePart.setDataHandler(new DataHandler(new ByteArrayDataSource(Files.readAllBytes(Paths.get(filePath)), "application/octet-stream")));Multipart multipart = new MimeMultipart();multipart.addBodyPart(textPart);multipart.addBodyPart(filePart);message.setContent(multipart);message.setFrom(new InternetAddress(USERNAME));message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(toMail));//发送Transport.send(message);} catch (Exception e) {throw new RuntimeException(e);}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【2025最新】Adobe Illustrator下载保姆级安装教程(附官方下载链接)

文章目录 Adobe Illustrator 2024新功能介绍如何提高Adobe Illustrator的运行效率 Adobe Illustrator 这款神器相信不用我多介绍了吧&#xff0c;设计师们的得力助手&#xff01;最新的2025版据说功能和体验都提升了不少。这篇呢&#xff0c;算是我个人整理的一个超详细adobe i…

2025.06.11【Ribo-seq】|根据注释文件获取外显子及ORF序列

文章目录 一、准备材料二、提取外显子区间为BED文件1. 提取GTF中exon为BED 三、用bedtools提取外显子fasta四、后续拼接外显子为ORF序列五、流程总结 一、准备材料 基因组fasta&#xff08;如&#xff1a;genome.fa&#xff09;RiboCode生成的GTF文件&#xff08;如&#xff1…

python第48天打卡

知识点回顾&#xff1a; 随机张量的生成&#xff1a;torch.randn函数卷积和池化的计算公式&#xff08;可以不掌握&#xff0c;会自动计算的&#xff09;pytorch的广播机制&#xff1a;加法和乘法的广播机制 ps&#xff1a;numpy运算也有类似的广播机制&#xff0c;基本一致 作…

Day50 Python打卡训练营

知识点回顾&#xff1a; 1. resnet结构解析 2. CBAM放置位置的思考 3. 针对预训练模型的训练策略 a. 差异化学习率 b. 三阶段微调 现在我们思考下&#xff0c;是否可以对于预训练模型增加模块来优化其效果&#xff0c;这里我们会遇到一个问题 预训练模型的结构和权重是固定…

leetcode:42. 接雨水(秒变简单题)

题目要求 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 要求给出一列柱子&#xff0c;求该柱子能盛放多少雨水 解题思路&#xff1a; 这些柱子围城了一个“盆地”&#xff0c;雨水会积攒在低洼处&…

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…

245. 2019年蓝桥杯国赛 - 数正方形(困难)- 递推

245. 数正方形&#xff08;困难&#xff09; 2019年蓝桥杯国赛 - 数正方形&#xff08;困难&#xff09; 标签&#xff1a;2019 国赛 递推 题目描述 在一个 N N N N N N 的点阵上&#xff0c;取其中 4 个点恰好组成一个正方形的 4 个顶点&#xff0c;一共有多少种不同的取…

python Day46 学习(日志Day15复习)

Q. 关于"range()" 手写笔记复习 今日学习到这里&#xff0c;明日继续加油&#xff01;&#xff01;&#xff01;浙大疏锦行

深度解析 Linux 内核参数 net.ipv4.tcp_rmem:优化网络性能的关键

文章目录 引言一、认识 net.ipv4.tcp_rmem1. 最小值&#xff08;min&#xff09;2. 默认值&#xff08;default&#xff09;3. 最大值&#xff08;max&#xff09; 二、net.ipv4.tcp_rmem 的工作原理三、net.ipv4.tcp_rmem 的实际应用场景1. 高并发 Web 服务器2. 文件传输服务3…

商品中心—1.B端建品和C端缓存的技术文档一

大纲 1.商品中心的专业术语 2.商品中心的基本业务系统 3.商品中心整体架构设计以及运行流程 4.商品B端—商品编码生成逻辑 5.商品B端—商品核心数据模型 6.商品B端—转换建品请求数据为商品模型数据 7.商品B端—商品建品时商品编号补全与审核配置 8.商品B端—商品审核前…

Xcode 16.2 版本 pod init 报错

Xcode 版本升级到 16.2 后&#xff0c;项目执行 pod init 报错&#xff1b; ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchron…

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…