发送邮件的几种方式
JavaMail 具体使用说明参考Oracle官网给出的API:链接地址
Jakarta Mail 具体使用说明参考Jakarta官方给出的API:链接地址
1:javax.* 也是java标准的一部分,但是没有包含在标准库中,一般属于标准库的扩展。通常属于某个特定领域,不是一般性的api。 所以以扩展的方式提供api,以避免jdk的标准库过大。当然某些早期的javax,后来被并入到标准库中,所有也应该属于新版本JDK的标准库。 比如jmx,java5以前是以扩展方式提供,但是jdk5以后就做为标准库的一部分了,所有javax.management也是jdk5的标准库的一部分。 2:com.sun.* 是sun的hotspot虚拟机中java.* 和javax.*的实现类。因为包含在rt中,所以我们也可以调用。但是因为不是sun对外公开承诺的接口, 所以根据根据实现的需要随时增减,因此在不同版本的hotspot中可能是不同的,而且在其他的jdk实现中是没有的,调用这些类, 可能不会向后兼容,一般不推荐使用 下面介绍的发送邮件的几种方式: ①:使用javax.mail的坐标依赖包(导包时看清楚是不是javax.mail的) <!--JavaMail基本包--> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <!--邮件发送的扩展包--> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> 注:坐标必须为两个,因为javax.mail没有携带依赖包javax.activation(发送) ②:使用com.sun.mail的坐标依赖包(不推荐使用,这里我没讲了,下面是它的坐标,坐标内携带javax.activation依赖) <!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail --> <!--使用Sun提供的Email工具包--> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version> </dependency> ③:使用Jakarta Mail发送邮件(和javax.mail使用方式基本一样,不过它内部携带了javax.activation依赖包) <dependency> <groupId>com.sun.mail</groupId> <artifactId>jakarta.mail</artifactId> <version>1.6.7</version> </dependency> ③:使用SpringBoot集成邮件发送 注:SpringBoot集成邮件发送底层使用Jakarta Mail技术 注:javax.JavaMail最后一个版本发布于2018年8月,后期发送邮件最好使用Jakarta Mail(它是javaMail的前身); 总结:不借助SpringBoot的情况下使用 javax.JavaMail 或 Jakarta Mail 方式