java给钉钉邮箱发送邮件功能实现

 更新时间:2025年02月27日 09:21:43   作者:o0麦嘎  
文章介绍了如何使用Java给钉钉邮箱发送邮件,包括开通POP和IMAP、引入pom、逻辑处理、直接添加前端传来的MultipartFile、添加多个附件以及给多个邮箱发送邮件等步骤,感兴趣的朋友一起看看吧

1.开通POP和IMAP

2.引入pom

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

3.逻辑

String host = "smtp.qiye.aliyun.com";
String port = "465";
String username = "xxxxxx@dingtalk.com"; // 钉钉发送者邮箱
String password = "xxxxxx"; // 发送者邮箱账号
String toEmail = "xxxxx@dingtalk.com"; // 钉钉接收者邮箱
String subject = "邮件标题"
try {
	Properties props = new Properties();
	props.setProperty("mail.smtp.host", host);
	props.setProperty("mail.smtp.port", port);
	props.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
 	props.setProperty("mail.smtp.socketFactory.fallback", "false");
	// 启用调试
	//props.setProperty("mail.debug", "true");
	props.setProperty("mail.smtp.socketFactory.port", port);
	props.setProperty("mail.smtp.auth", "true");
	// 建立邮件会话
	Session session = Session.getDefaultInstance(props, new Authenticator() {
		@Override
		protected PasswordAuthentication getPasswordAuthentication() {
			return new PasswordAuthentication(username, password);
		}
	});
	// 建立邮件对象
	MimeMessage message = new MimeMessage(session);
	message.setFrom(new InternetAddress(username));
	message.setRecipients(Message.RecipientType.TO, toEmail);
	message.setSubject(subject);
	MimeMultipart multipart = new MimeMultipart();
	BodyPart contentPart = new MimeBodyPart();
	// 邮件正文
	contentPart.setContent(content, "text/html;charset=utf-8");
	 multipart.addBodyPart(contentPart);
	// 附件
	MimeBodyPart attachmentBodyPart = new MimeBodyPart();
	// 读取本地文件,如果是前端传过来的MultipartFile文件,需要将MultipartFile转为file,再通过下面的方式:
	// File file = MultipartFileToFile(multipartFile);
	// DataSource source = new FileDataSource(file);
	// attachmentBodyPart.setDataHandler(new DataHandler(source));
	DataHandler dataHandler = new DataHandler(new FileDataSource("E:\\soft\\test.doc");
	attachmentBodyPart.setDataHandler(dataHandler);
	attachmentBodyPart.setFileName("test.doc");
	multipart.addBodyPart(attachmentBodyPart);
	// 设置邮件整体内容
	message.setContent(multipart);
	Transport.send(message);
} catch (Exception e) {
	e.printStackTrace();
}

4.直接添加前端传过来的MultipartFile

.....
MimeMultipart multipart = new MimeMultipart();
BodyPart contentPart = new MimeBodyPart();
// 邮件正文
contentPart.setContent(content, "text/html;charset=utf-8");
multipart.addBodyPart(contentPart);
// 附件--这里改下
MimeBodyPart attachmentBodyPart = new MimeBodyPart();
File file = MultipartFileToFile(multipartFile);
DataSource source = new FileDataSource(file);
attachmentBodyPart.setDataHandler(new DataHandler(source));
attachmentBodyPart.setFileName(file.getName());
multipart.addBodyPart(attachmentBodyPart);
// 设置邮件整体内容
message.setContent(multipart);
Transport.send(message);
.....

5.添加多个附件

MimeMultipart multipart = new MimeMultipart();
BodyPart contentPart = new MimeBodyPart();
// 邮件正文
contentPart.setContent(content, "text/html;charset=utf-8");
multipart.addBodyPart(contentPart);
// 附件--这里改下
for (MultipartFile multipartFile : files){
	MimeBodyPart attachmentBodyPart = new MimeBodyPart();
	File file = MultipartFileToFile(multipartFile);
	DataSource source = new FileDataSource(file);
	//添加附件的内容
	attachmentBodyPart.setDataHandler(new DataHandler(source));
	//添加附件的标题
	attachmentBodyPart.setFileName(file.getName());
	multipart.addBodyPart(filePart);
}
// 设置邮件整体内容
message.setContent(multipart);
Transport.send(message);

6.给多个邮箱发邮件

String tos = "a1@dingtalk.com,a2@dingtalk.com,a3@dingtalk.com";
String[] toList = to.split(",");
Address[] addresses = new Address[toList.length];
for (int i = 0; i < toList.length; i++) {
	addresses[i] = new InternetAddress(toList[i]);
}
message.setRecipients(Message.RecipientType.TO, addresses);

到此这篇关于java给钉钉邮箱发送邮件的文章就介绍到这了,更多相关java邮箱发送邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • intellij idea旗舰版解决学生无法注册问题详解

    intellij idea旗舰版解决学生无法注册问题详解

    这篇文章主要介绍了intellij idea旗舰版解决学生无法注册问题详解,文中通过图文示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java实现SSH模式加密

    Java实现SSH模式加密

    这篇文章主要介绍了Java实现SSH模式加密的相关资料,需要的朋友可以参考下
    2016-01-01
  • Mybatis返回类型为Map时遇到的类型转化的异常问题

    Mybatis返回类型为Map时遇到的类型转化的异常问题

    这篇文章主要介绍了Mybatis返回类型为Map时遇到的类型转化的异常问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 如何有效管理JVM中的垃圾?

    如何有效管理JVM中的垃圾?

    今天给大家带来的是关于Java虚拟机的相关知识,文章围绕着如何有效管理JVM中的垃圾展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Java简单数据加密方法DES实现过程解析

    Java简单数据加密方法DES实现过程解析

    这篇文章主要介绍了Java简单数据加密方法DES实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Springboot如何使用Map将错误提示输出到页面

    Springboot如何使用Map将错误提示输出到页面

    这篇文章主要介绍了Springboot如何使用Map将错误提示输出到页面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Java8时间api之LocalDate/LocalDateTime的用法详解

    Java8时间api之LocalDate/LocalDateTime的用法详解

    在项目中,时间的使用必不可少,而java8之前的时间api Date和Calander等在使用上存在着很多问题,于是,jdk1.8引进了新的时间api-LocalDateTime,本文就来讲讲它的具体使用吧
    2023-05-05
  • Java之Spring Bean 作用域和生命周期

    Java之Spring Bean 作用域和生命周期

    这篇文章主要介绍了Java Bean的作用域和生命周期,Bean 的作用域是指 Bean 在 Spring 整个框架中的某种行为模式,所谓的⽣命周期指的是⼀个对象从诞⽣到销毁的整个⽣命过程,我们把这个过程就叫做⼀个对象的⽣命周期,感兴趣的同学可以参考阅读
    2023-04-04
  • java多态性中的Overload和Override区别详解

    java多态性中的Overload和Override区别详解

    这篇文章主要介绍了java多态性中的Overload和Override区别详解,重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现,需要的朋友可以参考下
    2023-07-07
  • spring jpa 审计功能自定义填充字段方式

    spring jpa 审计功能自定义填充字段方式

    这篇文章主要介绍了spring jpa审计功能自定义填充字段方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11

最新评论