1. java mail介绍
2. jaf介绍
3. 第一个: javaMail 实例分析
package com.csdn.itcast;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Demo1 {
/**
* @param args
* @throws MessagingException
* @throws AddressException
*
* 开发时提示找不到某些驱动的事,要看看是不是忘了导入某些包
*/
public static void main(String[] args) throws AddressException,
MessagingException {
// 5.实例化session的时候需要传入一个props属性
Properties props = new Properties();
// 设置登录的认证方式
props.setProperty("mail.smtp.auth", "true");
// 设置传输协议
props.setProperty("mail.transport.protocol", "smtp");
// 4.创建卫星的时候需要传入一个session
Session session = Session.getInstance(props);
session.setDebug(true);
// 1.创建message信息,好比创建卫星;mimeMessage是message的子类,因为message是抽象类,所以这里实例化它的子类
Message msg = new MimeMessage(session);
// 设置邮件的内容和发件人,注意:这里发件人是设置的,固你可以随意填写发件人邮箱,假的都无所谓
msg.setText("你好!!");
msg.setFrom(new InternetAddress("yang@163.com"));
// 2.创建发送邮件的工具,好比创建火箭
Transport transport = session.getTransport();
transport.connect("smtp.sina.com", 25, "itcast_test", "123456");
/*
* 3.用火箭发射卫星;sendMessage()方法是Transport的对象调用的方法,send()则是Transport直接调用的方法,即静态方法
* ; 后者是把transport连接融合一块的方法,适合发送一条邮件的情况,因为如果发送多条会设置多个重复连接;而前者则相反
*/
transport.sendMessage(msg, new Address[] { new InternetAddress(
"itcast_test@sohu.com") });
// transport.send(msg, new Address[]{new
// InternetAddress("itcast_test@sohu.com")});
// 6.关闭资源
transport.close();
}
}
4.第二个:复杂一点的案例
package com.csdn.itcast;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.search.ReceivedDateTerm;
public class Demo2 {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.sina.com");
//下面用策略模式编写:这里在创建session的时候直接传入一个面对信息反馈器(new 一个Authenticator匿名内部类),来设置登录名和登录密码
Session session = Session.getInstance(props,new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("itcast_test","123456");
}
});
session.setDebug(true);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("itcast_xxx@sina.com"));
msg.setSubject("中文主题");
//这里用InternetAddress.parse()方法与前面案例用到的new Address[] {}达到的效果一样,parse()可以传入多个参数返回一个InternetAddress型的数组
msg.setRecipients(RecipientType.TO,InternetAddress.parse("itcast_test@sina.com,itcast_test@sohu.com"));
msg.setContent("<span style='color:red'>你傻啊!</span>","text/html;charset=UTF-8");
Transport.send(msg);
}
}