1、JavaMail概述
 Java Mail是由SUN公司提供的专门针对邮件的API,主要Jar包:mail.jar、activation.jar。

=============================

2、JavaMail中主要类
 
*  java mail中主要类:javax.mail.Session、javax.mail.internet.MimeMessage、javax.mail.Transport。

* Session:表示会话,即客户端与邮件服务器之间的会话。想获得会话需要给出账户和密码,当然还要给出服务器名称。在邮件服务中的* Session对象,就相当于连接数据库时的Connection对象。

* MimeMessage:表示邮件类,它是Message的子类。它包含邮件的主题(标题)、内容,收件人地址、发件人地址,还可以设置抄送和暗送,甚至还可以设置附件。

* Transport:用来发送邮件。它是发送器。

=============================

3 JavaMail之Hello World

在使用telnet发邮件时,还需要自己来处理Base64编码的问题,但使用JavaMail就不必理会这些问题了,都由JavaMail来处理。
 
------------------------

>第一步:获得Session
Session session= Session.getInstance(Properties prop, Authenticator auth);

*其中prop需要指定两个键值,一个是指定服务器主机名,另一个是指定是否需要认证。

Properties prop= new Properties();

prop.setProperty(“mail.host”,“smtp.163.com”);//设置服务器主机名

prop.setProperty(“mail.smtp.auth”,“true”);//设置需要认证

*其中Authenticator是一个接口表示认证器,即校验客户端的身份。我们需要自己来实现这个接口,实现这个接口需要使用账户和密码。

Authenticatorauth = new Authenticator(){

public PasswordAuthenticationgetPasswordAuthentication () {

new PasswordAuthentication(“pengweicong”,“123456”);//用户名和密码

}

};

*通过上面的准备,现在可以获取得Session对象了:

Session session= Session.getInstance(prop, auth);

------------------------

>第二步:创建MimeMessage对象

*创建MimeMessage需要使用Session对象来创建:

MimeMessage msg= new MimeMessage(session);

*然后需要设置发信人地址、收信人地址、主题,以及邮件正文。

msg.setFrom(newInternetAddress(“pengweicong@163.com”));//设置发信人

msg.addRecipients(RecipientType.TO,“pengweicong@qq.com,pengweicong@sina.com”);//设置多个收信人

msg.addRecipients(RecipientType.CC,“pengweicong@sohu.com,pengweicong@126.com”);//设置多个抄送

msg.addRecipients(RecipientType.BCC,”pengweicong@hotmail.com”);//设置暗送

msg.setSubject(“这是一封测试邮件”);//设置主题(标题)

msg.setContent(“hello world!”, “text/plain;charset=utf-8”);//设置正文

------------------------

>第三步:发送邮件

Transport.send(msg);//发送邮件

=============================

4 JavaMail发送带有附件的邮件(了解)

一封邮件可以包含正文、附件N个,所以正文与N个附件都是邮件的一个部份。

上面的hello world案例中,只是发送了带有正文的邮件。所以在调用setContent()方法时直接设置了正文,如果想发送带有附件邮件,那么需要设置邮件的内容为MimeMultiPart。

MimeMulitpartparts = new MimeMulitpart();//多部件对象,可以理解为是部件的集合

msg.setContent(parts);//设置邮件的内容为多部件内容。

然后我们需要把正文、N个附件创建为“主体部件”对象(MimeBodyPart),添加到MimeMuiltPart中即可。

MimeBodyPartpart1 = new MimeBodyPart();//创建一个部件

part1.setCotnent(“这是正文部分”, “text/html;charset=utf-8”);//给部件设置内容

parts.addBodyPart(part1);//把部件添加到部件集中。

下面我们创建一个附件:

MimeBodyPartpart2 = new MimeBodyPart();//创建一个部件

part2.attachFile(“D:\\pengweicong.jpeg”);//设置附件

part2.setFileName(“pengweicong.jpeg”);//设置附件名称

parts.addBodyPart(part2);//把附件添加到部件集中

注意,如果在设置文件名称时,文件名称中包含了中文的话,那么需要使用MimeUitlity类来给中文编码:

part2.setFileName(MimeUitlity.encodeText(“彭伟聪.jpg”));

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java笔记——JavaMail发送邮件的更多相关文章

  1. JavaMail发送邮件的笔记及Demo

    最近碰到一个需求,就是注册用户时候需要向用户发送激活邮箱,于是照着网上搜来的demo自己试着运行了一下,发件时我用的是网易163邮箱,收件时用QQ邮箱,运行后报了一个错误: 网络上搜索解决方式,多次尝 ...

  2. JavaMail发送邮件

    发送邮件包含的内容有: from字段  --用于指明发件人 to字段      --用于指明收件人 subject字段  --用于说明邮件主题 cc字段     -- 抄送,将邮件发送给收件人的同时抄 ...

  3. JavaMail发送邮件第一版

    首先,我们先来了解一个基本的知识点,用什么工具来发邮件? 简单的说一下,目前用的比较多的客户端:OutLook,Foxmail等 顺便了解一下POP3.SMTP协议的区别: POP3,全名为" ...

  4. web应用中使用JavaMail发送邮件

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...

  5. web应用中使用JavaMail发送邮件 。。转载

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...

  6. (转载)JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件

    博客源地址:http://www.cnblogs.com/xdp-gacl/p/4220190.html 现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件 ...

  7. java工作流软件发送邮件的方案

    利用javamail的功能将发送邮件的功能集成到java工作流系统中.javamail包提供有发送邮件的方法,设置发送人地址,收件人地址,抄送,主题,邮件服务器地址,认证用户等信息,再调用javama ...

  8. JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...

  9. javamail发送邮件的简单实例

    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接 ...

随机推荐

  1. 简单的linux命令笔记

    以下命令都是在ubuntu环境下执行 ftp启动 sudo service vsftpd start

  2. 【Search Insert Position 】cpp

    题目: Given a sorted array and a target value, return the index if the target is found. If not, return ...

  3. Oracle Client Language Problem

    If you execute SP in the Oracle client and got the error like this: oracle.xdo.XDOException:   oracl ...

  4. android 自动化压力测试-monkey 1 实践

    Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试.Monkey ...

  5. AutoMap1.0发布

    去年就已经透漏了AutoMap的雏形,后面一段时间一直没有充裕的时间来完成,只能零星的进行完善.现在产品还有很多不足,基本架构已经完成,就先释放一个1.0版,希望大家多多支持. 一.服务端 服务端在I ...

  6. 【LCA】CodeForce #326 Div.2 E:Duff in the Army

    C. Duff in the Army Recently Duff has been a soldier in the army. Malek is her commander. Their coun ...

  7. 【POJ】【2601】Simple calculations

    推公式/二分法 好题! 题解:http://blog.csdn.net/zck921031/article/details/7690288 这题明显是一个方程组……可以推公式推出来…… 然而这太繁琐了 ...

  8. NYOJ-205 求余数 AC 分类: NYOJ 2014-02-02 12:30 201人阅读 评论(0) 收藏

    这题目看一眼以为难度评级出错了,只是一个求余数的题目,,后来才发现,位数小于百万位,,,我还以为是大小小于百万呢,所以借鉴了另一大神的代码, 用大数,重点是同余定理: (a+b)mod m=((a m ...

  9. webservice之XFire的使用(java调用java)

    注意:xfire不支持java.util.List等集合,所以调用webservice传递的参数要为基本类型. 转自:http://zp9245.blog.163.com/blog/static/10 ...

  10. JavaScript之setcookie()讲解

    function setcookie(name,value){          var Days = 30;          var exp  = new Date();          exp ...