java 发邮件(有正文,有图片,有附件)

article/2025/9/14 8:39:33

一 需求:

1 java实现邮件发送
2 发送内容:
① 正文: 图片说明和图片
② 附件一: 图片作为附件发送
③ 附件二: Excel表格

二 思路:

1首先创建一个 Java 工程,把下载好的 javax.mail.jar 作为类库加入工程
2邮件创建步骤:
配置连接邮件服务器的参数( 邮件服务器SMTP, 是否需要SMTP验证 )
创建一个邮件对象( MimeMessage )
设置发件人,收件人 ( 可增加多个收件人,抄送人,密送人 )
设置邮件标题, 正文 , 附件等
设置显示的发送时间

三 操作:

(一). 在pom.xml中添加依赖
举例: 添加1.4版本的javax.mail ,如下图

 <dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4</version>
</dependency>

(二) 代码

在Controller层

 /*** sendEmail  发邮件*   * @param to  参数to为收件人,只能为单个收件人* @return* @throws UnsupportedEncodingException* @throws MessagingException*/
@RequestMapping(value = "/sendEmail",method = RequestMethod.GET)
public ResponseEntity<?> sendEmail( @RequestParam(value = "to") String to)throws UnsupportedEncodingException, MessagingException{topicService.sendMail(to);return Utility.ok();
}

在TopicService中:

/** The logger 日志. */
private Logger logger = LoggerFactory.getLogger(this.getClass());/*** sendMail 发邮件* * @param to 收件人* @throws MessagingException * @throws UnsupportedEncodingException */public void sendMail(String to) throws UnsupportedEncodingException, MessagingException {//1.创建邮件对象Properties properties = new Properties();properties.put("mail.smtp.host", "smtp.51testing.com"); // 指定SMTP服务器properties.put("mail.smtp.auth", "true"); // 指定是否需要SMTP验证Session session = Session.getInstance(properties);MimeMessage message =new MimeMessage(session);//2.设置发件人// InternetAddress 的三个参数分别为: 邮箱, 显示的昵称(只用于显示, 没有特别的要求), 昵称的字符集编码message.setFrom(new InternetAddress("tang@51testing.com","tang","UTF-8"));//3.设置收件人//To收件人   CC 抄送  BCC密送   message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(to,"xin","UTF-8"));// message.addRecipient(MimeMessage.RecipientType.CC,new InternetAddress("409****1@qq.com","xinyuezi","UTF-8"));//4.设置标题message.setSubject("测试邮件" ,"UTF-8");//message.setContent("Test Content:这是一封测试邮件...","text/html;charset=UTF-8");//5.设置邮件正文//一个Multipart对象包含一个或多个bodypart对象,组成邮件正文MimeMultipart multipart = new MimeMultipart();//读取本地图片,将图片数据添加到"节点"MimeBodyPart image = new MimeBodyPart();DataHandler dataHandler1 = new DataHandler(new FileDataSource("C:\\Users\\Public\\Pictures\\Sample Pictures\\flower.jpg"));image.setDataHandler(dataHandler1);image.setContentID("image_flower");//创建文本节点MimeBodyPart text = new MimeBodyPart();text.setContent("这张图片是花<br/><img src='cid:image_flower'/>","text/html;charset=UTF-8");//创建附件节点  读取本地文件,并读取附件名称MimeBodyPart file1 = new MimeBodyPart();DataHandler dataHandler2 = new DataHandler(new FileDataSource("C:\\Users\\Public\\Pictures\\Sample Pictures\\growing.png"));file1.setDataHandler(dataHandler2);file1.setFileName(MimeUtility.encodeText(dataHandler2.getName()));MimeBodyPart file2 = new MimeBodyPart();DataHandler dataHandler3 = new DataHandler(new FileDataSource("E:\\Tang\\topics.xlsx"));file2.setDataHandler(dataHandler3);file2.setFileName(MimeUtility.encodeText(dataHandler3.getName()));//将文本和图片添加到multipartmultipart.addBodyPart(text);multipart.addBodyPart(image);multipart.addBodyPart(file1);multipart.addBodyPart(file2);multipart.setSubType("mixed");//混合关系message.setContent(multipart);message.setSentDate(new Date());message.saveChanges();Transport transport = session.getTransport("smtp");transport.connect("smtp.51testing.com","tang@51testing.com","(需修改,填写自己的邮箱密码)");transport.sendMessage(message,message.getAllRecipients());transport.close();logger.info(Calendar.getInstance().getTime()+" : # Send mail to "+" success #");System.out.println("sendMail-----结束了");
}

(三) 结果显示
在这里插入图片描述

注: 本文中参数to只适合单个收件人, 不适合群发邮件
但是如果需要发送多个, 可以多选抄送CC


http://chatgpt.dhexx.cn/article/5NXSqHBG.shtml

相关文章

java接收邮件_Java实现邮件收发

一. 准备工作 1. 传输协议 SMTP协议-->发送邮件: 我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器) POP3协议-->接收邮件: 我们通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器) 2. 邮件收发原理 闪电…

java发送邮件工具类

1. 普通java实现邮件发送 1.1 创建maven项目&#xff0c;配置pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

java发送邮件带附件

一、 开启SMTP服务 1.基本都在邮箱设置里&#xff0c;开启后会获得神秘代码&#xff0c;后面有用。 2.记得添加依赖&#xff0c;或者自己添加jar包。 <dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>…

java 邮件模板

邮件发送代码可参照 java 发送邮件 1.情形 邮件发送代码可参照上述&#xff0c;本例只说明如果读取模板文件。公司定义模板较为复杂的情况&#xff0c;可采用此类发送方式 2. 模板 2.1 resource 建立模板 2.2 ftl 模板如下 <p>您好&#xff0c;${name}&#xff0c;您…

使用JAVA实现邮件发送功能

一、准备工作 小编今天以 QQ邮箱 进行演示操作。 想要使用代码操作邮箱发送邮件&#xff0c;需要在邮箱设置中申请开通 POP3/SMTP 服务。 接下来跟着小编的图文一步一步的操作开通吧&#xff01; 1.1 登录网页QQ邮箱&#xff0c;点击页面顶部设置按钮。 1.2 点击后会打开邮箱…

java发送qq邮件

1.登录qq邮箱 1&#xff09;点击设置 2&#xff09;点击账户 3&#xff09;开启第一个服务&#xff0c;我已经开过了 4&#xff09;开启验证&#xff08;让你发送指定内容到某个号码&#xff09;&#xff0c;完成后点击我已发送&#xff0c;就会出现授权码&#xff0c;授权码很…

java实现邮件发送

一.第一步:导入两个jar包。 activation.jar 和 mail.jar, 一定要添加到构建路径(不然找不到包) 两个用于Java发送邮件的jar包-Java文档类资源-CSDN下载 二、创建邮箱工具类:Mail.java import java.util.*; import java.io.*; import javax.mail.*; import javax.m…

Java(81):Java发邮件简单示例

Java Email jar包下载地址&#xff1a;JavaMail API https://www.oracle.com/java/technologies/javamail.html JavaMail 右侧下载&#xff0c;选择jar包下载 API文档参考&#xff1a;JavaMail API documentation https://javaee.github.io/javamail/docs/api/ 或直接引用…

java发送qq邮件_「java发邮件」Java 通过SMTP实现发送QQ邮件 - seo实验室

java发邮件 在Eclipse中创建项目&#xff0c;并把javax.amil.jar和commons-email-1.5,jar复制到项目中 链接&#xff1a;https://pan.baidu.com/s/1sQjA1GEpKi6IJJRGHKxjeA 密码&#xff1a;4ene 添加步骤&#xff1a; 1.首先在项目下创建一个文件夹&#xff0c;保存我们的jar包…

Java发邮件配置-hutool+腾讯企业邮箱

1、技术选型 1.1、hutool工具 1.2、javax.mail 1.3、腾讯企业邮箱2、环境准备 2.1、pom <!--javax.mail--><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependen…

Java(83)Java发邮件简单工具类

1、Maven引用 <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api --><dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.6.2</version></dependency><…

java发邮件 动态切换当前发送人

最近项目需要实现一个发送邮件功能&#xff0c;踩了一些坑&#xff0c;最终实现了。 在此写一下心得 开始做的时候一塌糊涂&#xff0c;觉得挺难的&#xff0c;但是做完之后发现其实简单的一批&#xff0c;接下来我就来写一下实现流程。 1、准备好拿来发送邮件的账号&#xf…

Java 发邮件-带附件且正文html格式

入职新公司不久&#xff0c;接到一个给用户发邮件的需求&#xff0c;有两点需要说明的&#xff1a;1&#xff09;正文需要格式化&#xff1b;2&#xff09;需要带附件。 大概了解了一下需求&#xff0c;我马上开始思考&#xff0c;现有项目中是否有类似的接口可以支持&#xf…

java实现发送邮件

本文介绍下java实现邮件的发送&#xff0c;意在网站用户评论时能够及时通知站长和用户评论被回复后能够及时通知用户。 下文介绍下具体实现。 java实现 首先引入springboot的邮箱依赖 <dependency><groupId>org.springframework.boot</groupId><artif…

java邮件发送

一、JavaMail介绍 1、概述 JavaMail是利用现有的邮件账户发送邮件的工具&#xff0c;比如我在网易注册一个邮箱账户&#xff0c;通过JavaMail的操控&#xff0c;我可以不亲自登录网易邮箱&#xff0c;让程序自动的使用网易邮箱发送邮件。这一机制被广泛的用在注册激活和垃圾邮…

使用Java实现邮件的发送

数年前&#xff0c;邮件的发送是经过人为的运输&#xff0c;从发件人---当地邮局---收件地邮局---收件人&#xff0c;付出的人力物力是非常大的。随着时代的进步&#xff0c;科技的发展&#xff0c;如今我们的生活中出现更高级发送邮件的方式&#xff0c;最常用的就是从&#x…

Java发送邮件详解

目录 一、关于电子邮件 电子邮件 传输协议 SMTP协议 POP3协议 邮件收发原理 二、发送纯文本邮件 二、发送带图片和附件的邮件 一、关于电子邮件 电子邮件 要在网络上实现邮件功能&#xff0c;必须要有专门的邮件服务器。 这些邮件服务器类似于现实生活中的邮局&…

基于JavaMail的Java邮件发送:简单邮件发送

本文链接: https://blog.csdn.net/xietansheng/article/details/51673073 电子邮件的应用非常广泛&#xff0c;例如在某网站注册了一个账户&#xff0c;自动发送一封欢迎邮件&#xff0c;通过邮件找回密码&#xff0c;自动批量发送活动信息等。但这些应用不可能和我们自己平时…

js 实现计数器功能

1.运用 setInterval()定时器计算秒数 <!DOCTYPE html> <html><head><title>JS实现计数器</title><meta http-equiv"content-type" content"text/html; charsetgbk"><script src"https://cdn.bootcss.com/jqu…

element的formatter失效的解决方案

formatter传入数据失效 组件封装的时这样 使用方式还是和element的官方使用方式相同