首先准备工作,我们得获取到javaMail1.4 的 jar
包 下载地址为:http://java.sun.com/products/javamail/downloads/index.html 这是最新的版本
1.4 版。 光有这个还不够,javaMail 发送邮件还需要依赖一个JavaBeans Activation Framework
来支持任意数据块的输入及相应处理。功能似乎不多,但目前许多浏览器和邮件工具中都能找到这种基本的 MIME
型支持。下载地址为:http://java.sun.com/products/archive/javabeans/jaf102.html 版本是1.0.2
,解压activation.jar 与 mail.jar
放到你程序的类路径之中,现在我们所有的准备工作就算是完事了。
javaMail1.4
想正确发送邮件,它会让我们去编写一个 发送服务器的验证类去继承Authenticator这个验证,下面给大家一个我写的例子,
package cn.CCmingzhou.mail;
import javax.mail.PasswordAuthentication;
import javax.mail.Authenticator;
public class Authentic extends Authenticator {
public
Authentic() {
}
public
Authentic(String name,String password)
{
this.setUsername(name);
this.setPwd(password);
}
//这里是我重载的构造方法,你也可以不去重载它,但是这样写会有一定的灵活性
private
String username =
"hackq"; //大多数是你邮件@前面的部分
private
String pwd =
"*******"; //这里的username 是你要发送邮箱的帐号比如说我要用我的hackq@163.com 这
//去往外发 那么你这里的username就填写 hackq 也就是说你@前面的部分
//pwd就是你发送邮箱的密码啦,这里还没有涉及到收件箱的 别急在下边
protected
PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(getUsername(), getPwd());
}
//看到了吧protected PasswordAuthentication
getPasswordAuthentication()这个方法是最重要的了,我们发送
//邮件的时候就要靠它去验证我们的发送邮件服务器了
//下面的get()和set() 不是必须的,可以不写,写了可以增加程序的灵活性
public
String getUsername() {
return username;
}
public void
setUsername(String username) {
this.username = username;
}
public
String getPwd() {
return pwd;
}
public void
setPwd(String pwd) {
this.pwd = pwd;
}
}
验证的类我们写完,下面写邮件的发送类
package cn.CCmingzhou.mail;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.*;
import java.util.*;
import cn.CCmingzhou.mail.Authentic;
//注意这里的引用类 要把我们刚才写的那个Authentic 验证类引进来
public class Mail {
public
Mail() {
}
public void
sendMsg(String mailAddress,String title,String content)
{
boolean sessionDebug = false;
InternetAddress[] address = null; try {
// 设定所要用的Mail 服务器和所使用的传输协议
java.util.Properties props = System.getProperties();
props.put("mail.host","smtp.163.com");
//这里是我们是用的 smtp
props.put("mail.transport.protocol","smtp");
props.put("mail.smtp.auth", "true");
// 产生新的Session 服务
Authentic auth = new Authentic(); //看到没,这里我们就用到验证类了 注意我这里是创建的空参的构造方法 因为我在Authentic类里已经给了默认
//值 也就是username=“hackq” pwd=“******”这里的****替换成你邮箱的密码
Session mailSession = Session.getDefaultInstance(props,
auth);
mailSession.setDebug(sessionDebug);
Message msg = new
MimeMessage(mailSession); // 设定传送邮件的发信人
msg.setFrom(new InternetAddress("hackq@163.com"));
// 设定传送邮件至收信人的信箱
address = InternetAddress.parse(mailAddress,false);
msg.setRecipients(Message.RecipientType.TO, address);
// 设定信中的主题 msg.setSubject(title);
// 设定送信的时间
//msg.setSentDate(new Date());
msg.setDataHandler(new
javax.activation.DataHandler("love","text/html"));
//这里要注意一下activation用到它了吧 也就是说我们可以发送超文本的邮件 html格式 “love”参数你可以随
//便指定为任意字符串
// 设定传送信的MIME Type
// 送信
msg.setContent(content,"text/html;charset=gb2312");
//content 是你要发送的内容 也就是你调用sendMsg(String mailAddress,String
title,String content)传
//进来的的值
Transport.send(msg);
//out.println("邮件已顺利传送");
}
catch (MessagingException mex) {
mex.printStackTrace();