JavaMail入门第三篇 发送邮件

JavaMail API中定义了一个java.mail.Transport类,它专门用于执行邮件发送任务,这个类的实例对象封装了某种邮件发送协议的底层实施细节,应用程序调用这个类中的方法就可以把Message对象中封装的邮件数据发送到指定的SMTP服务器。使用JavaMail发送邮件时设计到的主要API之间的工作关系如下所示:

1、从Session对象中获得实现了某种邮件发送协议的Transport对象;

2、使用Session对象创建Message对象,并调用Message对象的方法封装邮件数据;

3、连接指定的SMTP服务器,调用Transport对象中的邮件发送方法Message对象中封装的邮件数据。

JavaMail入门第二篇 创建邮件一文中,我们学会了创建邮件,不过当时我们是将邮件写入到我们的本地磁盘中,接下来我们用JavaMail API提供的Transport类来发送邮件

 1 import java.util.Date;
 2 import java.util.Properties;
 3
 4 import javax.mail.Message;
 5 import javax.mail.Session;
 6 import javax.mail.Transport;
 7 import javax.mail.internet.InternetAddress;
 8 import javax.mail.internet.MimeMessage;
 9
10 public class SendTextMail {
11     public static void main(String[] args) throws Exception {
12         String from = "[email protected]";
13         String to = "[email protected]";
14         String subject = "test";
15         String body = "test!!!";
16         String smtpHost = "smtp.qq.com";
17
18         Properties props = new Properties();
19         props.setProperty("mail.transport.protocol", "smtp"); // 使用的协议(JavaMail规范要求)
20         props.setProperty("mail.smtp.host", smtpHost); // 发件人的邮箱的 SMTP服务器地址
21         props.setProperty("mail.smtp.auth", "true"); // 请求认证,参数名称与具体实现有关
22
23         // 创建Session实例对象
24         Session session = Session.getDefaultInstance(props);
25         // 创建MimeMessage实例对象
26         MimeMessage message = new MimeMessage(session);
27         // 设置发件人
28         message.setFrom(new InternetAddress(from));
29         // 设置收件人
30         message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
31         // 设置发送日期
32         message.setSentDate(new Date());
33         // 设置邮件主题
34         message.setSubject(subject);
35         // 设置纯文本内容的邮件正文
36         message.setText(body);
37         // 保存并生成最终的邮件内容
38         message.saveChanges();
39         // 设置为debug模式, 可以查看详细的发送 log
40         session.setDebug(true);
41         // 获取Transport对象
42         Transport transport = session.getTransport("smtp");
43         // 第2个参数需要填写的是QQ邮箱的SMTP的授权码,什么是授权码,它又是如何设置?
44         transport.connect(from, "****************");
45         // 发送,message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
46         transport.sendMessage(message, message.getAllRecipients());
47         transport.close();
48     }
49 }

注意:邮箱账号必须要开启SMTP服务。

发送带内嵌资源或者是带附件的复杂邮件代码与JavaMail入门第二篇 创建邮件一文中类似,只是将写入硬盘的步骤替换成上面代码中的42-47行即可。

时间: 2024-11-05 04:49:58

JavaMail入门第三篇 发送邮件的相关文章

JavaMail入门第四篇 接收邮件

上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操作,再介绍这些类之前,我们先来了解下邮件接收API的体系结构,JavaMail API中定义了一个java.mail.Store类,它用于执行邮件的接收任务,我们在程序中调用这个类中的方法可以获取邮箱中的各个邮件夹的信息.JavaMail使用Folder对象表示邮件夹,通过Folder对象的方法可以

JavaMail入门第五篇 解析邮件

上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类型的数据处理模块,我们只需要在把数据流传输给浏览器之前明确地指定该数据流属于哪种数据类型即可,之后一切的解析操作由浏览器自动帮我们完成.下面这张图可以很好的说明解析邮件的步骤 1.调用Message对象的getFrom.getSubject等方法,可以得到邮件的发件人和主题等信息,调用getCont

Html/Css(新手入门第三篇)

一.学习心得---参考优秀的网页来学习. 1我们只做的静态网页主要用的技术?html+css 只要网上看到的,他的源代码公开的.[1].先去分析,他们页面是如何布局(结构化)[2].再试着去做一下,---模仿过程.[3].最后我们可以自己尝试创新---通向高手的过程. css精灵技巧,优化网页的http请求次数,提高网页的效率.*****css精灵的核心思想,就是将多张图片,合成一张图片,然后通过背景属性中的定位来控制到底显示图片中的哪些部分.*****如果网页中能选中的图片,那肯定就是插入的图

java入门第三步之数据库连接【转】

数据库连接可以说是学习web最基础的部分,也是非常重要的一部分,今天我们就来介绍下数据库的连接为下面学习真正的web打下基础 java中连接数据库一般有两种方式: 1.ODBC——Open Database Connectivity(开放数据库连接性):基于C语言的一套数据库编程接口,主要功能是提供数据库的访问和操作所有的数据库厂商对这套接口进行实现,不同数据库厂商提供的实现是不一样的,也就是通常所说的第三方支持,而这套编程接口就是我们的标准 2.JDBC——Java Database Conn

jQuery入门第三

jQuery入门第三 1.HTML 2.CSS 衣服 3.javascript 可以动的人 4.DOM 编程 对html文档的节点操作 5.jQuery 对 javascript的封装 简练的语法 复杂的操作 * -选择器 * -筛选 * -CSS * -属性 * -文档 * -事件 * -Ajax(Django) <style> td{ border:1px solid black; } td{ width:70px; height:20px; } p{ width:70px; height

Cocos2d-HTML5入门第三天

第二天掠过,不要在意细节. 第三天了,目前只搭了个hello world版本,而且换了三个版本,到现在仍旧不知道怎么开发游戏. 在上一篇文章搭建的基础上,分析一下结构. 抛开游戏不说,只谈b/s的b,顺着一开始的入口index.html页面. 眼前一个标准的H5页面 一个html5的新标签canvas,俩个js文件. 打开第一个文件cocos2d/cocos2d-html5/CCBoot.js 2千多行代码,粗略从头读到尾巴,发现里边无非就是定义了一个cc的命名空间,当做全局变量对象,这个cc对

Kotlin入门第三课:数据类型

前文链接: Kotlin学习第一课:从对比Java开始 Kotlin入门第二课:集合操作 初次尝试用Kotlin实现Android项目 Kotlin的数据类型与Java类似,因此这篇文章主要看Kotlin的几点改变(改进). 1.内置数据类型 Double--64位    Float--32位 Long--64位        Int--32位 Short--16位       Byte--8位 Kotlin中字符型不再是基础类型,下面会进行介绍. 1.1 类型名称 类型只有首字母大写1种名称,

python入门第1篇 python简介

一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写Python语言的编译器.Python这个名字,来自Guido所挚爱的电视剧Monty Python's Flying Circus.他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言. 最新的TIOBE排行榜,Python占据第4, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言.

struts入门第三结

一.package配置 1.认知:<package>元素可以把逻辑上相关的一组Action.Result.Intercepter等元素封装起来,形成一个独立        的模块,package可以继承其他的package,也可以作为父包被其他的package继承,比如"<package                    name="FirstStruts"  extends="struts-default">"中,F