JavaMail 邮件开发
(api + 配置)
开发中,邮件的应用?
-à 注册,填写生日; 后期系统会自动发送生日祝贺
-à 发货,发货提醒!邮件提醒!
邮件:
1. 发邮件;【程序中如何发邮件!】
2. 收邮件;【很多客户端工具, foxmail 】
邮件开发准备:
准备工作, 环境搭建:
1. 本地搭建一个邮件服务器
-à 易邮服务器,eyoumailserversetup.exe
2. 新建邮箱账号
张三给李四发邮件。
步骤1:
新建域名: 工具, 服务器设置, 单域名框中输入 itcast.com
步骤2:
新建邮箱账号: zhangsan@itcast.com
3. 安装foxmail
配置邮件发送服务器(smtp): localhost 25
邮件接收服务器(pop3): localhost 110
再新建账号,就可以接收邮件了!
邮件开发之普通邮件:
JavaMail开发,先引入jar文件:
activation.jar 【如果使用jdk1.6或以上版本,可以不用这个jar文件】
mail.jar 【邮件发送核心包】
/**
* 1. 发送一封普通邮件
* @author Jie.Yuan
*
*/
public class App_SendMail { @Test
public void testSend() throws Exception { //0. 邮件参数
Properties prop = new Properties();
prop.put("mail.transport.protocol", "smtp"); // 指定协议
prop.put("mail.smtp.host", "localhost"); // 主机 stmp.qq.com
prop.put("mail.smtp.port", 25); // 端口
prop.put("mail.smtp.auth", "true"); // 用户密码认证
prop.put("mail.debug", "true"); // 调试模式 //1. 创建一个邮件的会话
Session session = Session.getDefaultInstance(prop);
//2. 创建邮件体对象 (整封邮件对象)
MimeMessage message = new MimeMessage(session);
//3. 设置邮件体参数:
//3.1 标题
message.setSubject("我的第一封邮件 ");
//3.2 邮件发送时间
message.setSentDate(new Date());
//3.3 发件人
message.setSender(new InternetAddress("zhangsan@itcast.com"));
//3.4 接收人
message.setRecipient(RecipientType.TO, new InternetAddress("lisi@itcast.com"));
//3.5内容
message.setText("你好,已经发送成功! 正文...."); // 简单纯文本邮件
message.saveChanges(); // 保存邮件(可选) //4. 发送
Transport trans = session.getTransport();
trans.connect("zhangsan", "888");
// 发送邮件
trans.sendMessage(message, message.getAllRecipients());
trans.close();
}
}
邮件开发之带图片
/**
* 带图片资源的邮件
* @author Jie.Yuan
*
*/
public class App_2SendWithImg { // 初始化参数
private static Properties prop;
// 发件人
private static InternetAddress sendMan = null;
static {
prop = new Properties();
prop.put("mail.transport.protocol", "smtp"); // 指定协议
prop.put("mail.smtp.host", "localhost"); // 主机 stmp.qq.com
prop.put("mail.smtp.port", 25); // 端口
prop.put("mail.smtp.auth", "true"); // 用户密码认证
prop.put("mail.debug", "true"); // 调试模式
try {
sendMan = new InternetAddress("zhangsan@itcast.com");
} catch (AddressException e) {
throw new RuntimeException(e);
}
} @Test
public void testSend() throws Exception {
// 1. 创建邮件会话
Session session = Session.getDefaultInstance(prop);
// 2. 创建邮件对象
MimeMessage message = new MimeMessage(session);
// 3. 设置参数:标题、发件人、收件人、发送时间、内容
message.setSubject("带图片邮件");
message.setSender(sendMan);
message.setRecipient(RecipientType.TO, new InternetAddress("lisi@itcast.com"));
message.setSentDate(new Date()); /***************设置邮件内容: 多功能用户邮件 (related)*******************/
// 4.1 构建一个多功能邮件块
MimeMultipart related = new MimeMultipart("related");
// 4.2 构建多功能邮件块内容 = 左侧文本 + 右侧图片资源
MimeBodyPart content = new MimeBodyPart();
MimeBodyPart resource = new MimeBodyPart(); // 设置具体内容: a.资源(图片)
String filePath = App_2SendWithImg.class.getResource("8.jpg").getPath();
DataSource ds = new FileDataSource(new File(filePath));
DataHandler handler = new DataHandler(ds);
resource.setDataHandler(handler);
resource.setContentID("8.jpg"); // 设置资源名称,给外键引用 // 设置具体内容: b.文本
content.setContent("<img src='cid:8.jpg'/> 好哈哈!", "text/html;charset=UTF-8"); related.addBodyPart(content);
related.addBodyPart(resource); /*******4.3 把构建的复杂邮件快,添加到邮件中********/
message.setContent(related); // 5. 发送
Transport trans = session.getTransport();
trans.connect("zhangsan", "888");
trans.sendMessage(message, message.getAllRecipients());
trans.close();
}
}
邮件开发之带图片 + 附件
/**
* 3. 带图片资源以及附件的邮件
* @author Jie.Yuan
*
*/
public class App_3ImgAndAtta { // 初始化参数
private static Properties prop;
// 发件人
private static InternetAddress sendMan = null;
static {
prop = new Properties();
prop.put("mail.transport.protocol", "smtp"); // 指定协议
prop.put("mail.smtp.host", "localhost"); // 主机 stmp.qq.com
prop.put("mail.smtp.port", 25); // 端口
prop.put("mail.smtp.auth", "true"); // 用户密码认证
prop.put("mail.debug", "true"); // 调试模式
try {
sendMan = new InternetAddress("zhangsan@itcast.com");
} catch (AddressException e) {
throw new RuntimeException(e);
}
} @Test
public void testSend() throws Exception {
// 1. 创建邮件会话
Session session = Session.getDefaultInstance(prop);
// 2. 创建邮件对象
MimeMessage message = new MimeMessage(session);
// 3. 设置参数:标题、发件人、收件人、发送时间、内容
message.setSubject("带图片邮件");
message.setSender(sendMan);
message.setRecipient(RecipientType.TO, new InternetAddress("lisi@itcast.com"));
message.setSentDate(new Date()); /*
* 带附件(图片)邮件开发
*/
// 构建一个总的邮件块
MimeMultipart mixed = new MimeMultipart("mixed");
// ---> 总邮件快,设置到邮件对象中
message.setContent(mixed);
// 左侧: (文本+图片资源)
MimeBodyPart left = new MimeBodyPart();
// 右侧: 附件
MimeBodyPart right = new MimeBodyPart();
// 设置到总邮件块
mixed.addBodyPart(left);
mixed.addBodyPart(right); /******附件********/
String attr_path = this.getClass().getResource("a.docx").getPath();
DataSource attr_ds = new FileDataSource(new File(attr_path));
DataHandler attr_handler = new DataHandler(attr_ds);
right.setDataHandler(attr_handler);
right.setFileName("a.docx"); /***************设置邮件内容: 多功能用户邮件 (related)*******************/
// 4.1 构建一个多功能邮件块
MimeMultipart related = new MimeMultipart("related");
// ----> 设置到总邮件快的左侧中
left.setContent(related); // 4.2 构建多功能邮件块内容 = 左侧文本 + 右侧图片资源
MimeBodyPart content = new MimeBodyPart();
MimeBodyPart resource = new MimeBodyPart(); // 设置具体内容: a.资源(图片)
String filePath = App_3ImgAndAtta.class.getResource("8.jpg").getPath();
DataSource ds = new FileDataSource(new File(filePath));
DataHandler handler = new DataHandler(ds);
resource.setDataHandler(handler);
resource.setContentID("8.jpg"); // 设置资源名称,给外键引用 // 设置具体内容: b.文本
content.setContent("<img src='cid:8.jpg'/> 好哈哈!", "text/html;charset=UTF-8"); related.addBodyPart(content);
related.addBodyPart(resource); // 5. 发送
Transport trans = session.getTransport();
trans.connect("zhangsan", "888");
trans.sendMessage(message, message.getAllRecipients());
trans.close();
}
}
注意
Java project。
如果是web项目,因为javaee自带的有邮件功能,可能存在问题!
我们要用自己的mail.jar文件功能! 需要删除javaee中mail包!
JavaMail 邮件开发的更多相关文章
- 19、文件上传与下载/JavaMail邮件开发
回顾: 一. 监听器 生命周期监听器 ServletRequestListener HttpSessionListener ServletContextListener 属性监听器 ServletRe ...
- JavaMail邮件开发
一.只带有纯文本的邮件 代码事例如下: package com.lyh.sendemail; import java.util.Properties; import javax.mail.Messag ...
- Java-Mail邮件开发
Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务. 几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互 ...
- 传智播客张孝祥java邮件开发随笔01
01_传智播客张孝祥java邮件开发_课程价值与目标介绍 02_传智播客张孝祥java邮件开发_邮件方面的基本常识 03_传智播客张孝祥java邮件开发_手工体验smtp和pop3协议 第3课时 关于 ...
- javamail邮件Multipart支持同时发text和html混合消息,alternative纯文本与超文本共存
javamail邮件Multipart支持同时发text和html混合消息alternative纯文本与超文本共存 multipart/mixed:附件. multipart/related:内嵌资源 ...
- java深入探究10-文件上传组件FileUpload,邮件开发
1.文件上传组件FileUpload 1)java提供了文件上传的工具包 需要引入:commons-fileupload-1.2.1.jar(文件上床组件核心包) commons-oi-1.4(封装了 ...
- 【JavaWeb项目】一个众筹网站的开发(九)邮件开发
Java官方支持邮件开发,Javax-mail jdk中默认没有,需要另外下载 apache的基于Javax-mail开发了commons-mail,更加简单高效,推荐使用 一.电子邮件接收和发送协议 ...
- Java邮件开发(JavaMail)
Sun发布的用来处理email的API,它可以方便地执行一些常用的邮件传输.JavaMail API是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一 ...
- JavaMail邮件发送不成功的那些坑人情况及分析说明
[我的Segmentfault原文]https://segmentfault.com/a/1190000008030346 前言 JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有 ...
随机推荐
- 关于List<T> 的排序
/** * @author hjn * @entity Student * @date 2017年5月23日15:22:18 */ public class Student { private Str ...
- Android Weekly Notes Issue #258
Android Weekly Issue #258 May 21st, 2017 Android Weekly Issue #258 本期内容: 围绕着Google I/O的热潮, 本周的posts除 ...
- 弹出框插件layer使用
layer是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验. 插件官方地址:http://layer.layui.co ...
- [.NET跨平台]Jeuxs独立版本的便利与过程中的一些坑
本文环境与前言 之前写过一篇相关的文章:在.NET Core之前,实现.Net跨平台之Mono+CentOS+Jexus初体验 当时的部署还是比较繁琐的,而且需要联网下载各种东西..有兴趣的可以看看, ...
- sqlserver使用job删除过期备份文件
享下链接:http://blog.csdn.net/xieyufei/article/details/33770067(注意这里主要说明怎么设置删除过期备份文件) 先说下sqlserver使用job删 ...
- git使用3
如何使用/学习第三方框架? 优秀的第三方框架都在 github.com 1> 搜索 2> git clone 获得完整版本 $ git clone https://github.com/A ...
- CSS实现文字和图片的水平垂直居中
关于文字和图片的水平垂直居中,在前端界绝对算是一个老生常谈的问题了,尤其是垂直居中,什么千奇百怪的解法都能想的出来.下面我就总结一些比较常用的方法: 一.文本的水平垂直居中: 1.水平居中: 是不是很 ...
- 织梦dedecms单标签、双标签
标签是dedecms的核心,dedecms的标签也跟html标签一样,同样分单标签和双标签. 我不会讲单标签有那些,双标签有那些,也不会叫大家去背那些是单标签,那些是双标签.如果去背这些标签,这样学起 ...
- HTML5浏览器定位navigator.geolocation.getCurrentPosition
<!DOCTYPE html> <html> <body> <p id="demo">点击这个按钮,获得您的坐标:</p> ...
- navicat连接oracle 报 ORA-12737 set CHS16GBK
1首先,我们打开“工具”-->"选项"菜单,见到如下界面,依据OCI library(oci.dll) 路径,导航到 navicat oci 目录下,备份里面的文件(通过在该 ...