【Mail】JavaMail介绍及发送邮件(一)
JavaMail介绍
JavaMail是SUN提供给开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持常用的邮件协议,如SMTP、POP3、IMAP,开发人员使用JavaMail编写邮件程序时,无需考虑底层的通信细节(Socket),JavaMail也提供了能够创建出各种复杂MIME格式的邮件内容的API。使用JavaMail,我们可以实现类似OutLook、FoxMail的软件。虽然JavaMail(仅支持JDK4及以上)也是Java的API之一,但是却没有直接加入到JDK中,所以我们需要另行下载。另外,JavaMail依赖JAF(JavaBeans Activation Framework),JAF在Java6之后已经合并到JDK中,而JDK5之前需要另外下载JAF的类库。
JavaMail下载地址:http://www.oracle.com/technetwork/java/javamail/index.html
JavaMail发送邮件
邮件的方发送过程可以参照:【Mail】telnet收发邮件过程;本例中主要流程是:先创建一个Message(邮件对象),然后使用Transport(邮件传输对象)发邮件发送到邮件服务器。
- 先新建一个javaweb的maven项目。参照:【Maven】Eclipse 使用Maven创建Java Web项目;
- 在pom文件中,引入javamail.jar包

- 新建一个Demo1类,使用Transport 非静态方法 发送邮件
package com.hd.javamail; import java.util.Properties; import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage; /**
*
* @author H__D
* @date 2016年12月6日 下午7:01:27
*
*/
public class Demo1 { /**
* 使用Transport 非静态方法 发送邮件
* 连接163服务,给QQ邮箱发邮件
*/
public static void main(String[] args) throws Exception { // 属性
Properties properties = new Properties();
// 设置认证属性
properties.setProperty("mail.smtp.auth", "true");
// 设置通信协议
properties.setProperty("mail.transport.protocol", "smtp");
// 邮件环境信息
Session session = Session.getInstance(properties);
// 调试,打印信息
session.setDebug(true); // 邮件
Message message = new MimeMessage(session);
// 主题
message.setSubject("test message");
// 发送人
message.setFrom(new InternetAddress("xxxx@163.com"));
// 内容
message.setText("this is content"); // 邮件传输对象
Transport transport = session.getTransport();
// 传输连接:host,port,user,pass/主机,端口,用户名,密码
transport.connect("smtp.163.com", 25, "xxxx@163.com", "xxxxxx");
// 发送邮件
transport.sendMessage(message, new Address[] { new InternetAddress("123456@qq.com") }); // 关闭连接
transport.close();
}
} - 新建一个Demo2类,使用Transport 非静态方法 发送邮件
package com.hd.javamail; import java.util.Properties; import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage; /**
*
* @author H__D
* @date 2016年12月6日 下午7:05:07
*
*/
public class Demo2 { /**
* 使用Transport 静态方法 发送邮件
* 连接163服务,给多个QQ邮箱发邮件
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// 属性对象
Properties properties = new Properties();
// 开启debug调试 ,打印信息
properties.setProperty("mail.debug", "true");
// 发送服务器需要身份验证
properties.setProperty("mail.smtp.auth", "true");
// 发送服务器端口,可以不设置,默认是25
properties.setProperty("mail.smtp.port", "25");
// 发送邮件协议名称
properties.setProperty("mail.transport.protocol", "smtp");
// 设置邮件服务器主机名
properties.setProperty("mail.host", "smtp.163.com");
// 环境信息
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 在session中设置账户信息,Transport发送邮件时会使用
return new PasswordAuthentication( "xxxx@163.com", "xxxxx");
}
}); // 创建邮件对象
Message message = new MimeMessage(session);
//设置主题
message.setSubject("中文主题");
// 发件人
message.setFrom(new InternetAddress("xxxx@163.com"));
// 多个收件人
message.setRecipients(RecipientType.TO, InternetAddress.parse("654321@qq.com,123456@qq.com"));
// 抄送人
message.setRecipient(RecipientType.CC, new InternetAddress("aaaaaa@163.com"));
// 暗送人
message.setRecipient(RecipientType.BCC, new InternetAddress("bbbbbbb@163.com"));
// HTML内容
message.setContent("<span style='color:red'>中文呵呵</span>","text/html;charset=utf-8"); // 连接邮件服务器、发送邮件、关闭连接,全做了
Transport.send(message); }
} - 使用 465端口 发送邮件,且使用ssl认证 发送邮件
package com.hd.javamail; import java.util.Properties; import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage; /**
*
* @author H__D
* @date 2019年11月28日 下午7:05:07
*
*/
public class Demo3 { /**
* 由于国际与国内均对垃圾邮件进行严格管控,很如服务器的25端口被禁用了
* 下面介绍使用465端口发送邮件
* 使用Transport 静态方法 发送邮件
* 连接163服务,给多个QQ邮箱发邮件
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// 属性对象
Properties properties = new Properties();
// 开启debug调试 ,打印信息
properties.setProperty("mail.debug", "true");
// 发送服务器需要身份验证
properties.setProperty("mail.smtp.auth", "true");
// 使用ssl认证
properties.setProperty("mail.smtp.ssl.enable", "true");
// 发送服务器端口,可以不设置,默认是25
properties.setProperty("mail.smtp.port", "465");
// 发送邮件协议名称
properties.setProperty("mail.transport.protocol", "smtp");
// 设置邮件服务器主机名
properties.setProperty("mail.host", "smtp.163.com");
// 环境信息
Session session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 在session中设置账户信息,Transport发送邮件时会使用
return new PasswordAuthentication( "xxxx@163.com", "xxxxx");
}
}); // 创建邮件对象
Message message = new MimeMessage(session);
//设置主题
message.setSubject("中文主题");
// 发件人
message.setFrom(new InternetAddress("xxxx@163.com"));
// 多个收件人
message.setRecipients(RecipientType.TO, InternetAddress.parse("654321@qq.com,123456@qq.com"));
// 抄送人
message.setRecipient(RecipientType.CC, new InternetAddress("aaaaaa@163.com"));
// 暗送人
message.setRecipient(RecipientType.BCC, new InternetAddress("bbbbbbb@163.com"));
// HTML内容
message.setContent("<span style='color:red'>中文呵呵</span>","text/html;charset=utf-8"); // 连接邮件服务器、发送邮件、关闭连接,全做了
Transport.send(message); }
}
【Mail】JavaMail介绍及发送邮件(一)的更多相关文章
- JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址
/** * JavaMail SMTP服务器发送邮件程序示例 * 扮演SMTP服务器角色与邮件客户端软件最大的区别就是: * SMTP服务器需要解析不同接收人邮件地址主机名对应的SMTP服务器主机名 ...
- Spring的JavaMail实现异步发送邮件
具体背景就不说了,可以网上搜索相关知识,或者直接看Sping MailSender的官坊网页.这里就直接实战了(Java实现异步发送电子邮件,包含中文无乱码). Maven: <dependen ...
- SpringBoot 2.0 集成 JavaMail ,实现异步发送邮件
一.JavaMail的核心API 1.API功能图解 2.API说明 (1).Message 类: javax.mail.Message 类是创建和解析邮件的一个抽象类 子类javax.mail.in ...
- (三)集成 JavaMail ,实现异步发送邮件
集成 JavaMail ,实现异步发送邮件 1.JavaMail的核心API 1.1 API功能图解 1.2 API说明 1.2.1 Message 类: 1.2.2 Transport 类 1.2. ...
- Linux下配置mail使用外部SMTP发送邮件
修改/etc/mail.rc,增加两行:指定外部的smtp服务器地址.帐号密码等. # vi /etc/mail.rc set from=demo@qq.com smtp=smtp.qq.com se ...
- Java Mail(二):JavaMail介绍及发送一封简单邮件
http://blog.csdn.net/ghsau/article/details/17839983 ************************************************ ...
- 使用JavaMail创建邮件发送邮件
一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...
- Android JavaMail介绍及发送一封简单邮件
本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/17839983,转载请注明. JavaMail是SUN提供给开 ...
- Java JavaMail通过SMPT发送邮件
概述 本讲讲述如何使用JavaMail工具包,通过SMPT协议,在Java代码中发送邮件. 一.JavaMail简介 JavaMail API提供了一个独立于平台且与协议无关的框架来构建邮件和消息传递 ...
随机推荐
- 怎样增强MyEclipse的代码自动提示功能
步骤/方法 1 一 般在Eclipse ,MyEclipse代码里面,打个foreach,switch等 这些,是无法得到代码提示的(不信自己试试),其他的就更不用说了,而在Microsoft Vis ...
- Python中出现的异常
简单的写几种我知道的关于Python中出现的异常含义,希望大神批评指正,我只是学软件开发的菜鸟,前面的路还很长,我会努力学习! 什么是异常? 异常既是一个事件,该事件会在程序执行过程中发生,影响了程序 ...
- linux 学习6 软件包管理 资料链接
软件包管理 这一章看得比较随意 先大概记点东西. RPM安装很繁琐,因为依赖性,手动安装太麻烦. ______我觉得直接yum在线安装就好了,很直接方便. 但是要特别注意的地方 在用yum升级或者卸载 ...
- ios 中 documents和library 的区别
简单来说就是用户在APP中输入并保存的数据放在Documents文件夹中(如用户输入的文本等), 并且如果手机连接电脑时,iTunes会自动备份其中文件,苹果不允许我们将下载的大型文件放入该文件夹. ...
- java 截取url的参数
/** * 去掉url中的路径,留下请求参数部分 * @param strURL url地址 * @return url请求参数部分 * @author lzf */ private static S ...
- Halcon学习之条形码实时扫描
dev_open_window(1,1,400,400,'blue',ThisHandle) create_bar_code_model([], [], BarCodeHandle) set_bar_ ...
- jquery实现动画
animate() 方法 语法: $(selector).animate({params},speed,callback); 必需的 params 参数定义形成动画的 CSS 属性. 可选的 spee ...
- -[UIKeyboardLayoutStar release]: message sent to deallocated instance 0x7fbe49120000
__NSArrayM objectAtIndex: 取消swizzle 只有debug的时候会报错,发布的时候是好的,所以可以不用改
- Glide 加载图片
//通过model获取到图片的url,将Url转换成bitmap对象: //设置不保存内存和硬盘缓存, 1 Glide.with(mContext).load(model.getVideoUrl()) ...
- HDU 1251统计难题
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...