用 Java 发送 HTML 内容并带附件的电子邮件

实现思路

  1. 首先,设置邮件服务器的相关属性,包括是否需要认证、使用的邮件协议、服务器地址、端口等。

  2. 创建一个会话对象,使用 Session.getInstance 方法,并提供邮件服务器的属性和认证信息。

  3. 创建一个 MimeMessage 对象作为邮件消息,设置发件人、收件人、邮件主题等信息。

  4. 为了发送 HTML 内容,使用 setContent 方法并指定内容类型为 text/html

  5. 对于附件,创建一个 MimeMultipart 对象,将 HTML 内容作为一个 MimeBodyPart 加入,同时将附件也作为一个 MimeBodyPart 加入,使用 attachFile 方法添加附件。

  6. 最后,使用 Transport.send 方法发送邮件。

以下是完整的 Java 代码示例:

import javax.mail.*;
import javax.mail.internet.*;
import java.io.File;
import java.util.Properties;public class HtmlAndAttachmentEmailSender {public static void main(String[] args) {// 邮件服务器的属性设置Properties properties = new Properties();properties.put("mail.smtp.auth", "true");properties.put("mail.smtp.starttls.enable", "true");properties.put("mail.smtp.host", "smtp.example.com");properties.put("mail.smtp.port", "587");// 发件人的邮箱账号和密码String senderEmail = "your_email@example.com";String senderPassword = "your_password";// 创建会话对象Session session = Session.getInstance(properties, new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(senderEmail, senderPassword);}});try {// 创建邮件消息对象MimeMessage message = new MimeMessage(session);message.setFrom(new InternetAddress(senderEmail));message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient_email@example.com"));message.setSubject("HTML 内容并带附件的邮件");// 创建一个多部分的邮件内容对象Multipart multipart = new MimeMultipart();// 第一部分:HTML 内容BodyPart htmlPart = new MimeBodyPart();String htmlContent = "<html><body><h1>嘿,这是一封带有附件的 HTML 邮件哦!</h1><p>是不是很赞呢?</p></body></html>";htmlPart.setContent(htmlContent, "text/html; charset=utf-8");multipart.addBodyPart(htmlPart);// 第二部分:附件BodyPart attachmentPart = new MimeBodyPart();File file = new File("path/to/your/attachment.pdf"); // 这里替换为你要添加的附件的实际路径attachmentPart.attachFile(file);multipart.addBodyPart(attachmentPart);// 将多部分内容设置到邮件消息中message.setContent(multipart);// 发送邮件Transport.send(message);System.out.println("HTML 内容并带附件的邮件发送成功!");} catch (MessagingException | java.io.IOException e) {e.printStackTrace();System.out.println("邮件发送失败!");}}
}

代码解释

怎么样,小伙伴们,是不是很简单呢 赶紧把这段代码用到你的项目中,让你的邮件更加丰富和强大吧 不过,在使用过程中,记得处理好异常情况,防止出现意外哦 有啥问题随时来问我,我会帮你解决的!

  • Properties 类:用于存储邮件服务器的属性,如 mail.smtp.auth 表示是否需要身份验证,mail.smtp.starttls.enable 表示是否启用 TLS 安全连接,mail.smtp.host 是邮件服务器的主机名,mail.smtp.port 是端口号。

  • Session 类:代表邮件会话,使用 Session.getInstance 方法根据 propertiesAuthenticator 生成,Authenticator 提供发件人的认证信息。

  • MimeMessage 类:代表邮件消息,使用 session 创建,通过 setFrom 设置发件人,setRecipients 设置收件人,setSubject 设置主题。

  • Multipart 类:代表邮件的多部分内容,这里使用 MimeMultipart 实现。

  • MimeBodyPart 类:代表邮件的一部分内容,可以是 HTML 文本或附件。对于 HTML 部分,使用 setContent 方法将 HTML 内容添加进去,并指定内容类型为 text/html;对于附件部分,使用 attachFile 方法添加附件。

  • Transport.send 方法:最终发送邮件。

  • 使用说明

  • 确保你将代码中的 your_email@example.com 替换为发件人的真实邮箱地址,your_password 替换为发件人的邮箱密码。

  • recipient_email@example.com 替换为收件人的真实邮箱地址。

  • path/to/your/attachment.pdf 替换为你要添加的附件的实际路径。

  • 运行代码时,如果遇到异常,会打印异常信息,同时输出 "邮件发送失败!";如果发送成功,会输出 "HTML 内容并带附件的邮件发送成功!"。

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

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

相关文章

【2025小年源码免费送】

&#x1f496;学习知识需费心&#xff0c; &#x1f4d5;整理归纳更费神。 &#x1f389;源码免费人人喜&#xff0c; &#x1f525;码农福利等你领&#xff01; &#x1f496;山高路远坑又深&#xff0c; &#x1f4d5;大军纵横任驰奔&#xff0c; &#x1f389;谁敢横刀立马行…

python学opencv|读取图像(四十一 )使用cv2.add()函数实现各个像素点BGR叠加

【1】引言 前序已经学习了直接在画布上使用掩模&#xff0c;会获得彩色图像的多种叠加效果&#xff0c;相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;四十&#xff09;掩模&#xff1a;三通道图像的局部覆盖-CSDN博客 这时候如果更进一步&#xff0c;直接…

【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因

FFN&#xff08;前馈神经网络&#xff09;在Transformer模型中先升维再降维的设计具有多方面的重要原因&#xff0c;以下是对这些原因的总结&#xff1a; 1.目标与动机 高维映射空间&#xff1a;FFN的设计目的是通过一系列线性变换来拟合一个高维的映射空间&#xff0c;而不仅…

生成模型:生成对抗网络-GAN

1.原理 1.1 博弈关系 1.1.1 对抗训练 GAN的生成原理依赖于生成器和判别器的博弈 生成器试图生成以假乱真的样本。判别器试图区分真假样本。 这种独特的机制使GAN在图像生成、文本生成等领域表现出色。 具有表现为: 生成器 (Generator, G) 生成器的目标是从一个随机噪声&…

MongoDB基本操作

一、实验目的 1. 熟悉MongoDB的基本操作&#xff0c;包括CRUD&#xff08;增加、读取、更新、删除&#xff09;。 2. 理解MongoDB的文档型数据库特性和Shell的使用。 3. 培养学生通过命令行操作数据库的能力。 4. 强化数据库操作的实际应用能力。 二、实验环境准备 1.…

微透镜阵列精准全检,白光干涉3D自动量测方案提效70%

广泛应用的微透镜阵列 微透镜是一种常见的微光学元件&#xff0c;通过设计微透镜&#xff0c;可对入射光进行扩散、光束整形、光线均分、光学聚焦、集成成像等调制&#xff0c;进而实现许多传统光学元器件难以实现的特殊功能。 微透镜阵列&#xff08;Microlens Array&#x…

AIGC视频生成模型:ByteDance的PixelDance模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍ByteDance的视频生成模型PixelDance&#xff0c;论文于2023年11月发布&#xff0c;模型上线于2024年9月&#xff0c;同时期上线的模型还有Seaweed&…

【超详细】ELK实现日志采集(日志文件、springboot服务项目)进行实时日志采集上报

本文章介绍&#xff0c;Logstash进行自动采集服务器日志文件&#xff0c;并手把手教你如何在springboot项目中配置logstash进行日志自动上报与日志自定义格式输出给logstash。kibana如何进行配置索引模式&#xff0c;可以在kibana中看到采集到的日志 日志流程 logfile-> l…

从入门到精通:RabbitMQ的深度探索与实战应用

目录 一、RabbitMQ 初相识 二、基础概念速览 &#xff08;一&#xff09;消息队列是什么 &#xff08;二&#xff09;RabbitMQ 核心组件 三、RabbitMQ 基本使用 &#xff08;一&#xff09;安装与环境搭建 &#xff08;二&#xff09;简单示例 &#xff08;三&#xff09;…

[苍穹外卖] 1-项目介绍及环境搭建

项目介绍 定位&#xff1a;专门为餐饮企业&#xff08;餐厅、饭店&#xff09;定制的一款软件产品 功能架构&#xff1a; 管理端 - 外卖商家使用 用户端 - 点餐用户使用 技术栈&#xff1a; 开发环境的搭建 整体结构&#xff1a; 前端环境 前端工程基于 nginx 运行 - Ngi…

USART_串口通讯轮询案例(HAL库实现)

引言 前面讲述的串口通讯案例是使用寄存器方式实现的&#xff0c;有利于深入理解串口通讯底层原理&#xff0c;但其开发效率较低&#xff1b;对此&#xff0c;我们这里再讲基于HAL库实现的串口通讯轮询案例&#xff0c;实现高效开发。当然&#xff0c;本次案例需求仍然和前面寄…

后端面试题分享第一弹(状态码、进程线程、TCPUDP)

后端面试题分享第一弹 1. 如何查看状态码&#xff0c;状态码含义 在Web开发和调试过程中&#xff0c;HTTP状态码是了解请求处理情况的重要工具。 查看状态码的步骤 打开开发者工具&#xff1a; 在大多数浏览器中&#xff0c;您可以通过按下 F12 键或右键单击页面并选择“检查…

Apache Hive3定位表并更改其位置

Apache Hive3表 1、Apache Hive3表概述2、Hive3表存储格式3、Hive3事务表4、Hive3外部表5、定位Hive3表并更改位置6、使用点表示法引用表7、理解CREATE TABLE行为 1、Apache Hive3表概述 Apache Hive3表类型的定义和表类型与ACID属性的关系图使得Hive表变得清晰。表的位置取决于…

OpenEuler学习笔记(九):安装 OpenEuler后配置和优化

安装OpenEuler后&#xff0c;可以从系统基础设置、网络配置、性能优化等方面进行配置和优化&#xff0c;以下是具体内容&#xff1a; 系统基础设置 更新系统&#xff1a;以root用户登录系统后&#xff0c;在终端中执行sudo yum update命令&#xff0c;对系统进行更新&#x…

Vue | 搭建第一个Vue项目(安装node,vue-cli)

一.环境搭建&#xff1a; 1.安装node&#xff1a; 进入网站&#xff0c;下载对应版本的node.js Index of /dist/ (nodejs.org) 我这里下载的是&#xff1a; 解压到对应的目录下&#xff1a; 并新建两个文件夹node_cache和node_global&#xff1a; 2.配置环境&#xff1a; …

日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件

日历热力图&#xff0c;月度数据可视化图表&#xff0c;vue组件 先看效果&#x1f447; 在线体验https://www.guetzjb.cn/calanderViewGraph/ 日历图简单划分为近一年时间&#xff0c;开始时间是 上一年的今天&#xff0c;例如2024/01/01 —— 2025/01/01&#xff0c;跨度刚…

2024年第十五届蓝桥杯青少组国赛(c++)真题—快速分解质因数

快速分解质因数 完整题目和在线测评可点击下方链接前往&#xff1a; 快速分解质因数_C_少儿编程题库学习中心-嗨信奥https://www.hixinao.com/tiku/cpp/show-3781.htmlhttps://www.hixinao.com/tiku/cpp/show-3781.html 若如其他赛事真题可自行前往题库中心查找&#xff0c;题…

[Computer Vision]实验三:图像拼接

目录 一、实验内容 二、实验过程及结果 2.1 单应性变换 2.2 RANSAC算法 三、实验小结 一、实验内容 理解单应性变换中各种变换的原理&#xff08;自由度&#xff09;&#xff0c;并实现图像平移、旋转、仿射变换等操作&#xff0c;输出对应的单应性矩阵。利用RANSAC算法优…

FPGA自分频产生的时钟如何使用?

对于频率比较小的时钟&#xff0c;使用clocking wizard IP往往不能产生&#xff0c;此时就需要我们使用代码进行自分频&#xff0c;自分频产生的时钟首先应该经过BUFG处理&#xff0c;然后还需要进行时钟约束&#xff0c;处理之后才能使用。

【喜讯】海云安荣获“数字安全产业贡献奖”

近日&#xff0c;国内领先的数字化领域独立第三方调研咨询机构数世咨询主办的“2025数字安全市场年度大会”在北京成功举办。在此次大会上&#xff0c;海云安的高敏捷信创白盒产品凭借其在AI大模型技术方面的卓越贡献和突出的技术创新能力&#xff0c;荣获了“数字安全产业贡献…