什么情况需要邮件发送?
1、注册后,账户激活功能 (获得有效真实邮箱地址)
2、商城广告邮件
3、节日祝福
4、系统对用户功能通知,可以通过邮件
今天学习目标:通过java程序发送邮件
邮件服务器? 网络中一台电脑,在电脑安装邮件服务器端软件,需要对服务器进行配置
电子邮箱? 邮件服务器上账户,可以通过电子邮箱登陆 邮件服务器
* 服务器会为每个邮箱账户,分配一定空间,用来保存邮箱相关电子邮件
邮件收发协议? SMTP、POP3、IMAP
SMTP 发送邮件协议,默认端口25
POP3 收取邮件协议,默认端口110
* 协议是用来规定通信格式的
IMAP 收取邮件协议,默认端口143,允许用户在线操作邮件,而不需要将邮件下载 ------- GMAIL开发IMAP权限
收发邮件过程是怎么样?
1、aaa@sina.com 通过新浪客户端 连接新浪smtp服务器,发送邮件
2、新浪是smtp 需要将信件转投 给搜狐的 smtp服务器
3、搜狐smtp 获得邮件后,会将邮件保存 bbb@sohu.com 对应邮箱空间里
4、bbb@sohu.com 通过搜狐客户端,连接搜狐pop3服务器,pop3会读取bbb对应邮箱空间,获得aaa发送的邮件,返回客户端显示邮件内容
手动收发邮件实验
1、在sina和sohu 分别注册两个邮箱账户
sina: yuyang94895@sina.com / 1qaz2wsx
sohu: yuyang94895@sohu.com /1qaz2wsx
2、用sina向sohu发送一封邮件,通过telnet(socket程序) 手动根据协议发送邮件
3、安装telnet
抄送:A 发给B ,选择抄送给C , B可以看见邮件抄送给 C (邮件是给B的,需要让C知道B已经收到邮件)
暗送:A 发给B,选择暗送给C ,B可以看见邮件,但是不能看到邮件发给C (邮件给B,也想给C一份,但不想让B知道)
4、使用SMTP发送邮件 连接新浪smtp : telnet stmp.sina.com 25
ehlo xxx ----- SMTP2代 helo
auth login ----- 发邮件时,发给服务器用户名和密码必须使用base64编码
eXV5YW5nOTQ4OTU=
MXFhejJ3c3g=
mail from:<yuyang94895@sina.com> ----- 发件人
rcpt to:<yuyang94895@sohu.com> ----- 收件人
data ------ 邮件内容
from:<yuyang94895@sina.com>
to:<yuyang94895@sohu.com>
subject:第一封0713测试邮件
这是一封测试邮件,哈哈~~~~
.
quit ----- 退出客户端
5、安装易邮
工具 --- 服务器设置 ---- 修改单域名 estore.com -------------------- xxx@estore.com
账户 --- 新建账户 aaa/111 bbb/111
用aaa@estore.com 向 bbb@estore.com 发送一封邮件
6、smtp连接易邮发件
连接易邮smtp服务器 telnet localhost 25
ehlo xxx ----- SMTP2代 helo
auth login ----- 发邮件时,发给服务器用户名和密码必须使用base64编码
YWFh
MTEx
mail from:<aaa@estore.com> ----- 发件人
rcpt to:<bbb@estore.com> ----- 收件人
data ------ 邮件内容
from:<aaa@estore.com>
to:<bbb@estore.com>
subject:第一封0713测试邮件
这是一封测试邮件,哈哈~~~~
.
quit ----- 退出客户端
7、pop3连接易邮收取邮件
连接易邮pop3服务器 telnet localhost 110
user bbb
pass 111
stat ----- 返回邮箱的统计信息
list 邮件号 ------ 邮件信息
retr 邮件号 ------ 收取邮件内容
quit
-----------------------------------------------------------------------------------------------------------------------------------------------
telnet win7 输入中文 ? 问题 ---- 客户端本身问题
putty 小工具 模拟客户端,采用多种连接协议 连接服务器 ------ 企业使用远程连接操作linux
对putty设置
window --- Translation (Use font encoding 就是系统默认编码集gbk) ------------------- 可以将字符集设为utf-8 , window不需要
window --- appearance ---- change 字体显示中文字体(新宋体) 字符集 gb2312
Session中对ip port 和协议进行配置
两种客户端收发邮件软件使用:foxmail、outlook
* 定时收发邮件,提醒用户有新的邮件
1、foxmail 安装配置
邮箱 --- 新建邮箱账户
输入邮箱 密码点击下一步
* 在foxmail安装目录/mail目录/ 每配置一个邮箱 出现一个文件夹
配置pop3 ---- 需要写真实服务器地址 ---- 易邮localhost
配置smtp
2、outlook 安装配置
工具 --- 电子邮箱账户 ---- 添加新电子邮件账户
其它设置 --- 发送服务器 --- 勾选我的发送服务器要求验证
其它设置 --- 高级 ---- 勾选在服务器上保留邮件副本
* win7 无法连通本地易邮
cmd> ping localhost ---- ::1 ---- 解决在hosts文件 添加127.0.0.1 localhost
RFC822文档 规定邮件内容格式 区分和smtp ?
SMTP 通信协议,规定发送邮件时,客户端与服务器通信数据格式
RFC822文档 对邮件中文规定
邮件内容 包括邮件头和邮件体
邮件头 from(发件人) to(收件人) subject(标题) cc(抄送) bcc(暗送)
邮件体 : 邮件正文内容,需要和邮件头以一个空行分隔
RFC822文档 规定一封简单邮件如何编写,本身存在漏洞
* 发邮件过程中 mail from字段 和 RFC822文档 from字段 不同会出现什么问题? 冒名邮件问题
* 对方收取邮件时,只能看到from字段内容,无法得知mail from 地址
ehlo xxx
auth login
YWFh
MTEx
mail from:<aaa@estore.com>
rcpt to:<bbb@estore.com>
data
from: <hr@google.com>
to:<bbb@estore.com>
subject:面试通知
尊敬的李先生,我们已经看过您的简历,发觉您的简历,非常符合我公司搜索研发部,Android开发技术经理职位,请于2012年4月1日到中关村科贸大厦12层B座1205室参加面试。
google人力资源部
2012.1.1
.
--------------------------------------------------------------------------------------------------------------------------
JavaMail 是一套sun 提供开发邮件收发程序API,JavaMail编写程序就是邮件客户端程序(和outlook、foxmail功能类似)
* JavaMail开发需要类库 javamail API ,还需要下载 Java Activation Framework (jaf) ---- javamail API 依赖 jaf
导入jar包
mail.jar activation.jar(JDK6.0以后官方API自带)
* JDK6.0 以后开发 只需要导入 mail.jar ----- rt.jar 提供javax.activation 开发包
* JDK5.0(包括) 之前开发,需要导入mail.jar 和 activation.jar
javax.mail.Message 类 ----- 代表邮件本身
* 在javamailAPI中 一个邮件 就是一个Message对象
* 开发中使用javax.mail.internet.MimeMessage 代表邮件
javax.mail.Session 类 ----- 代表与服务器连接会话(简单理解连接)
***** java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream 异常
MyEclipse 中javaee.jar 提供javamai API 与 JavaMail 引入jar包发生冲突
解决 :删除javaee.jar里面的mail目录和activation目录
window --- preferences --- 搜索lib ----- Library sets
JAVAMAIL 邮件收发四个核心类
1、Message 邮件
2、Session 连接会话
3、Transport 发送邮件
4、Store 收取邮件
发送邮件编程
1、创建与邮件发送服务器连接Session
2、编写邮件内容 Message
* 符合邮件内容格式RFC822文档 setFrom setRecipients setSubject setText
3、使用Transport工具类 发送邮件
@Test
public void demo2() throws MessagingException {
Properties properties = new Properties();
// 设置properties 属性
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.host", "smtp.exmail.qq.com");
properties.put("mail.smtp.auth", "true");// 连接认证
properties.put("mail.debug", "true");// 在控制台显示连接日志信息
Session session = Session.getInstance(properties);
// 步骤二 编写Message
MimeMessage message = new MimeMessage(session);// 代表一封邮件
// from字段
message.setFrom(new InternetAddress("7xxxxxxx@qq.com"));
// to 字段
message.setRecipients(Message.RecipientType.TO, "4xxxxxxx@qq.com");
// subject字段
message.setSubject("javamail发送简单邮件");
// 邮件正文内容
message.setText("使用javamail 可以发送简单邮件 ...");
// 步骤三 使用Transport发送邮件
Transport transport = session.getTransport();
// 发邮件前进行身份校验
transport.connect("7xxxxxx@qq.com", "123");
transport.sendMessage(message, message.getAllRecipients());
}
-------------------------------------------------------------------------------------------
RFC822 只定义简单邮件格式,没有定义复杂邮件如何编写
MIME 协议 是 RFC822文档的升级补充,完全支持RFC822文档
MIME 将邮件体分成多个部分,每个部分使用分隔线进行分隔,为每个部分提供Content-Type 类型属性
MIME描述邮件多个部分之间关系
1、multipart/mixed 用于携带附件
2、multipart/related 内嵌图片,音乐
3、multipart/alternative 防止兼容问题
* 发送简历时,将简历文件与邮件正文关系设置为alternative,当邮件客户端如果支持简历格式,简历会显示在正文中,如果不支持简历格式,简历会以附件携带
如果发送复杂邮件时,需要携带附件,需要为附件部分,设置Content-Disposition属性,值attachment
* 语法 Content-Dispostion : attachment;filenam=文件名
内嵌图片或者其他资源是,内嵌资源需要提供Content-ID属性,作为该资源唯一标识
* 在邮件正文中通过 <img src="cid:唯一标识" /> 引用内嵌图片和资源
JavaMail怎样描述一封复杂邮件
MimeMessage ----- 整封邮件
MimeBodyPart ---- 邮件每个部分
MimeMultiPart ---- 将BodyPart进行整合
1、判断邮件由几个部分组成,每个部分设计BodyPart
2、将BodyPart组合起来 ---- MultiPart(只有BodyPart之间可以组合,MultiPart不可以和其它BodyPart直接组合,需要组合将MultiPart转换BodyPart)
3、将最后合成MultiPart 交给MimeMessage 对象
总结一下:
1、发送内嵌图片 :图片设置ContentID,在邮件正文中cid:设置id引用目标图片,实现内嵌效果 ---- 图片关系related
2、发送携带附件 :附件中文名,setFileName设置,通过MimeUtility 对中文附件名进行编码 ---- 自动生成Content-Disposition字段 ---- 附件关系mixed
@Test
// 内嵌图片邮件
public void demo3() throws Exception {
// 发送邮件需要三个步骤
// 步骤一:创建Session
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.host", "localhost");
properties.put("mail.smtp.auth", "true");// 连接认证
properties.put("mail.debug", "true");// 在控制台显示连接日志信息
Session session = Session.getInstance(properties);// 与邮件服务器连接会话
// 步骤二:创建Message
MimeMessage message = new MimeMessage(session);
// 设置邮件头(简单邮件和复杂邮件相同
message.setFrom(new InternetAddress("aaa@estore.com"));
message.setRecipients(Message.RecipientType.TO, "bbb@estore.com");
message.setSubject("javamail发送内嵌图片邮件");
// 设置邮件体(简单邮件和复杂邮件区别 就在于邮件体)
MimeBodyPart pic = new MimeBodyPart();// 图片
// 链接数据文件
pic.setDataHandler(new DataHandler(new FileDataSource("beauty.jpg")));
// DataSource dataSource = new FileDataSource("beauty.jpg");
// DataHandler dataHandler = new DataHandler(dataSource);
// pic.setDataHandler(dataHandler);
// 设置一个唯一标识(用于在正文中引入)
pic.setContentID("mypic");
MimeBodyPart content = new MimeBodyPart(); // 邮件正文
content.setContent("<h1>美女图片</h1><img src='cid:mypic' />",
"text/html;charset=utf-8");
// 将两个BodyPart整合
MimeMultipart mimeMultipart = new MimeMultipart();
mimeMultipart.addBodyPart(pic);
mimeMultipart.addBodyPart(content);
// 设置关系
mimeMultipart.setSubType("related");
message.setContent(mimeMultipart);
// message.writeTo(System.out);
// 步骤三:Transport发送邮件
Transport transport = session.getTransport();
transport.connect("aaa", "111");
transport.sendMessage(message, message.getAllRecipients());
}
@Test
//发送附件
public void demo3() throws MessagingException, UnsupportedEncodingException {
Properties properties = new Properties();
// 设置properties 属性
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.host", "smtp.exmail.qq.com");
properties.put("mail.smtp.auth", "true");// 连接认证
// properties.put("mail.debug", "true");// 在控制台显示连接日志信息
Session session = Session.getInstance(properties);
// 步骤二 编写Message
MimeMessage message = new MimeMessage(session);// 代表一封邮件
// from字段
message.setFrom(new InternetAddress("7xxx@qq.com"));
// to 字段
message.setRecipients(Message.RecipientType.TO, "4xxx@qq.com");
// subject字段
message.setSubject("javamail发送携带附件邮件");
// 邮件正文内容
MimeBodyPart attache = new MimeBodyPart();
attache.setDataHandler(new DataHandler(new FileDataSource(
"大嘴巴 - maybe的机率.mp3")));
// 中文附件名的编码
attache.setFileName(MimeUtility.encodeText("大嘴巴 - maybe的机率.mp3"));// 自动生成mime
MimeBodyPart text = new MimeBodyPart();
text.setContent("<h1>附件是歌曲</h1>", "text/html;charset=utf-8");
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(attache);
mm.addBodyPart(text);
mm.setSubType("mixed");
message.setContent(mm);
// 步骤三 使用Transport发送邮件
Transport transport = session.getTransport();
// 发邮件前进行身份校验
transport.connect("7xxx@qq.com", "xxx");
transport.sendMessage(message, message.getAllRecipients());
}
--------------------------------------------------------------------------------------------------------------------
邮件发送综合案例:注册账户,发送激活邮件,去邮箱激活,进行登陆
* 如果账户未激活情况下,不允许用户登陆
1、功能一:用户注册(用户名、密码、邮箱)--- 在注册服务器端,发送一封激活邮件
2、功能二:去邮件,进行邮件激活
3、功能三:用户登陆(判断用户账户是否激活)
create table user(
id int primary key auto_increment,
username varchar(40) unique,
password varchar(40),
email varchar(100) unique ,
state int ,
activecode varchar(100),
updatetime timestamp
);
state为1 账户已经激活 state为0 账户未激活
activecode 激活码,在服务器端生成,当用户注册后,将激活码发到对方邮箱,并且将激活码保存数据库
账户激活有时间要求,在数据表保存updatetime,控制用户按时进行激活
***** 编写定时器 每隔6小时 运行一次,判断哪个账户已经24小时未激活,未激活,删除用户(发送通知邮件)
Tomcat对JavaMail的支持(JNDI访问) ----- 之前学习tomcat数据库连接池
1、在tomcat启动时,准备javamail 的session对象
2、在Servlet、JSP 通过JNDI方式 访问容器中Session对象
3、获得Session对象,发送邮件
配置javamail/Session
<Context>
<Resource name="mail/Session" auth="Container"
type="javax.mail.Session"
mail.smtp.host="localhost"
mail.transport.protocol="smtp"
mail.smtp.auth="true"
/>
</Context>
***** java.lang.ClassCastException: javax.mail.Session cannot be cast to javax.mail.Session
错误位置:Session session = (Session) envCtx.lookup("mail/Session");
错误原因:Java中类加载器顺序 (tomcat创建Session使用common加载器,加载tomcat/lib , Servlet中Session使用当前应用类加载器,加载WEB-INF/lib)
.java ---- 编译 ---- .class ----- 需要被JVM的类加载器程序进行加载 ---- java.lang.Class类对象
解决:将当前工程WEB-INF/lib/mail.jar删除
----------------------------------------------------------------------------------------------
MX与A记录(配置邮件服务器相关的信息)
MX记录:在DNS中进行注册,目的让其它服务器找到服务器地址
* 通过nslookup
set type=mx
sina.com
freemx.sinamail.sina.com.cn DNS查询MX记录 (发信不需要登陆)
smtp.sina.com 从网站上获得地址 (发信需要先登陆)
***** 如果连接MX记录中新浪服务器地址,发信,是不是也不需要登陆? A记录校验
*如果你用搜狐身份连接 新浪mx记录服务器,新浪服务器中会通过A记录 校验你的身份?
set type=a
sohu.com
Non-authoritative answer:
Name: sohu.com
Addresses: 61.135.181.175, 61.135.181.176
当你冒充搜狐去新浪发信时,新浪从DNS上获得sohu的A记录,比较来访者ip 与A记录ip是否相同,相同不是冒充的,不同证明冒充
A 记录:当别人以邮箱服务器身份连接不要认证mx记录时候,需要从DNS中获得对方A记录,与来访者IP进行笔记,进行身份验证
***** 自己搭建一个邮件服务器,千万不要忘记去DNS上注册MX记录和A记录
- 浏览: 73522 次
- 性别:
文章分类
最新评论
发表评论
-
git sshkey生成
2015-10-13 10:09 565Git SSH Key 生成步骤 2012-11 ... -
hibernate04
2014-06-27 21:03 570*一)hibernate的检索方 ... -
hibernate03 一对一 多对多双向映射
2014-06-24 17:19 954*一)【双向】一对多 ... -
hibernate_02 四种状态 多对一级联操作
2014-06-11 19:55 1108*一)持久化对象的状态变化和对应的方法 (1)持久化 ... -
hibernate_01hibernate入门简单api
2014-06-10 18:20 745一)orm和hibernate概述 参见PPT< ... -
struts2_03表单校验ognl国际化
2014-06-07 10:23 987一、用户输入验证 1、编程方式: 动作类中的所有方法进行验 ... -
struts02表单验证文件上传自定义拦截器类型转换常用常量
2014-05-11 21:46 996一.package下可以配置全局页面 <!-- pa ... -
struts201 struts2环境搭建及入门
2014-05-10 21:31 582一、分析之前的项目的不足,编写属于自己的框架二、Strut ... -
ajax03 jquery jquery_ajax
2014-05-09 23:14 716非常流行JS框架 : jQue ... -
day25 注解技术 动态代理 servlet3.0 线程池
2014-05-03 01:11 1322Java基础加强第一天 : JDJava基础加强第一天 : J ... -
day20 文件上传与下载
2014-05-02 10:50 1129文件上传功能应用非常广泛,例如:头像上传、商品图片、新闻图片、 ... -
ajax day01 JS加强
2014-05-02 10:37 714<!--[if !mso]> <styl ... -
ajaxday2 ajax json xstream
2014-05-02 10:34 1006第三部分:AJAX 异步 JavaScript和 XML ... -
day18 监听器 统计在线人数,定时销毁超时session,钝化活化session,在线列表显示和踢人功能防止用户自动登录,在线支付
2014-04-12 20:53 934Servlet 监听器和过滤器一样,是Servlet开发高 ... -
day17过滤器 禁止缓存中文乱码自动登录MD5加密url级别权限控制
2014-04-12 09:27 1218day17Servlet Filter 过滤器 day1 ... -
day16 项目1客户信息系统
2014-04-09 15:32 545客户信息增删改查系统 软件工程开发流程:1、瀑布模型 2 ... -
day15 JDBC元数据 DBUtils 开发模型
2014-04-06 17:47 776人们直接使用JDBC开发,非常麻烦 ----- 企业中开发w ... -
day14 JDBC事务管理 数据库连接池技术
2014-04-06 17:44 1009今天学习重点:JDBC事 ... -
day13 JDBC 基础 事务控制 大数据 批处理
2014-04-06 17:41 883JDBC : Java Database Connectiv ... -
day12 mysql复杂sql语句编写
2014-04-06 17:38 968SQL基本部分:1、数据 ...
相关推荐
JavaMail 是一个强大的开源库,用于在Java应用程序中实现电子邮件的发送和接收功能。它提供了丰富的API,使得开发者能够方便地处理SMTP、POP3、IMAP等邮件协议,支持多种邮件格式,包括文本、HTML以及带有附件的邮件...
JavaMail 是一个开源库,用于在Java应用程序中处理电子邮件。这个库提供了丰富的API,使得开发者可以方便地执行发送、接收、读取和管理邮件的任务。`javamail-1.6`是JavaMail的一个版本,它包含了从早期版本中继承的...
JavaMail 是一个开源的Java库,它为Java程序员提供了处理电子邮件的能力。这个库不仅支持SMTP、POP3和IMAP协议,还支持其他的邮件系统协议,如NNTP和EWS。JavaMail API是JavaMail库的核心部分,它提供了一系列的接口...
JavaMail API是Java平台上用于发送和接收电子邮件的一个标准扩展库。它并不是Java标准库的一部分,而是Java企业版(J2EE)中的一部分。JavaMail提供了一系列用于处理电子邮件的类和接口,允许开发者在Java应用程序中...
javaMail javaMail javaMail javaMail javaMail javaMail javaMail
JavaMail是Java编程语言中用于处理电子邮件的API,它提供了丰富的功能,允许开发人员发送、接收和管理电子邮件。本篇文章将深入探讨JavaMail的核心概念、关键组件以及如何使用这两个特定的jar包——`jaf-1_1_1.zip`...
JavaMail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的功能。这个API包括了多种协议的支持,如SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)。在...
JavaMail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的能力。这个“JavaMail 1.6.0 Final Release”是 JavaMail 的一个重要版本,它包含了对 SMTP(简单邮件传输协议)、IMAP...
JavaMail 是一个开源的 Java API,它为Java开发者提供了处理电子邮件的能力。这个API允许开发者发送、接收、管理邮件,包括附件、HTML 内容、MIME 多部分消息等。`javamail.jar` 文件是JavaMail的核心库,包含了所有...
JavaMail API是Java平台上用于处理电子邮件的一套标准API,它为开发者提供了丰富的接口和类,以便于发送、接收和管理电子邮件。JavaMail API是Java EE的一部分,但也可以在Java SE环境中使用。`javaMail.jar`是...
在“学习JavaEE的day19”这个主题中,我们主要关注的是Java企业级应用开发的相关内容。JavaEE,全称Java Platform, Enterprise Edition,是一个用于构建和部署企业级Web应用程序的标准框架。它包含了多种服务、APIs...
JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API JavaMail邮件收发实例_JavaMail_API
JavaMail 是一个开源的Java库,它为Java程序员提供了发送、接收和操作电子邮件的强大功能。在Java应用程序中发送电子邮件,通常需要依赖特定的库,JavaMail 就是其中之一。本主题将详细介绍JavaMail以及与之相关的`...
JavaMail 是一个开源的 Java API,它允许 Java 程序员通过 SMTP、POP3、IMAP 协议发送、接收和管理电子邮件。这个技术在企业级应用开发中非常常见,尤其是在构建自动化通知系统或者集成邮件服务时。下面将详细阐述 ...
JavaMail 是一个强大的开源库,专门用于在Java应用程序中处理电子邮件。这个完整JAR包包含了所有必要的组件,使得开发者能够方便地实现发送、接收、读取以及管理电子邮件。以下是JavaMail的一些关键知识点: 1. **...
JavaMail 是一个开源的 Java API,它为 Java 开发者提供了处理电子邮件的接口和类库。这个API使得在Java应用程序中发送和接收邮件变得简单。JavaMail 1.5.2 版本是该库的一个特定发行版,可能包含了一些性能优化、新...
JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送、接收和管理。这个文档集包含 JavaMail 的详细文档、库文件(JAR)以及 API 文档,版本为 1.4.7。以下是关于 JavaMail 的核心知识点及其实现功能的详细说明...
JavaMail 是一个开源的 Java API,它允许程序员通过 SMTP、POP3 或 IMAP 协议发送、接收和处理电子邮件。这个“javamail 视频源码 第一部分”很可能是张孝祥老师的一个教程系列,旨在帮助开发者深入理解如何使用 ...
javaMail示例javaMail示例javaMail示例javaMail示例javaMail示例javaMail示例,我自己做的,保证运行成功,里面jar包都有,只需导入即可,把邮箱设置一下就可以了。
JavaMail 是一个开源库,用于在Java应用程序中处理电子邮件。这个封装javamail的项目旨在简化邮件发送和接收的过程,通过提供自定义的接口和类,使得开发者可以更方便地利用JavaMail API。 首先,我们需要了解...