准备工作:
1:163邮箱账号,用来发送邮件
账号注册好后,需要设置授权密码,程序需要使用这个密码来发送邮件
2 . jar包
需要两个jar mail.jar commons-email-1.4.jar
链接如下:
http://pan.baidu.com/s/1i55ckRz
maven配置如下:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.4</version>
</dependency>
3.代码
其中邮件的密码已经屏蔽,要使用需要自己申请163账号并设置授权密码
Mail.java 配置信息
package cn.wtzvae.util.mail;
import java.io.Serializable;
/**
*
* @author LiuJinan
* @version V1.0.0 2016年11月23日
* @version V1.1.0 2016年12月26日
*/
@SuppressWarnings("serial")
class Mail implements Serializable{
public final static String ENCODEING = "UTF-8";
private final static String HOST = "smtp.163.com";
private final static String SENDER = "jinanvae@163.com"; //发送人邮箱
private final static String NAME = "昵称"; //发件人昵称
private final static String PASSWORD = "授权密码"; //密码
private final static String SUBJECT = "标题"; //邮件标题
private final static String USERNAME = "jinanvae@163.com"; //发送人邮箱
/**
* 服务器地址
*/
private String host = this.HOST;
/**
* 发件人邮箱
*/
private String sender = this.SENDER;
/**
* 收件人
*/
private String receiver;
/**
* 发件人昵称
*/
private String name = this.NAME;
/**
* 发件人账号
*/
private String username = this.USERNAME;
/**
* 发件人密码
*/
private String password = this.PASSWORD;
/**
* 主题
*/
private String subject = this.SUBJECT;
/**
* 发送的信息
*/
private String message;
public String getHost() {
return host;
}
// public void setHost(String host) {
// this.host = host;
// }
public String getSender() {
return sender;
}
// public void setSender(String sender) {
// this.sender = sender;
// }
public String getReceiver() {
return receiver;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUsername() {
return username;
}
// public void setUsername(String username) {
// this.username = username;
// }
public String getPassword() {
return password;
}
// public void setPassword(String password) {
// this.password = password;
// }
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
MailUtil.java
package cn.wtzvae.util.mail;
import java.util.regex.Pattern;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
/**
*
* @author LiuJinan
* @version V1.0.0 2016年11月23日
* @version V1.1.0 2016年12月26日
*/
public class MailUtil {
/**
* 发送邮件
* @author LiuJinan
* @time 2016-11-23 上午9:10:22
* @param to 收件人
* @param title 标题
* @param message 发送内容
* @return
*/
public static boolean send(String to, String title, String message) throws MailException{
if(to==null || to.equals("")){
throw new MailException(MailError.MAIL_NULL_RECEIVER);
}
if(title==null || title.equals("")){
throw new MailException(MailError.MAIL_NULL_SUBJECT);
}
if(message==null || message.equals("")){
throw new MailException(MailError.MAIL_NULL_MESSSAGE);
}
Mail mail = new Mail();
mail.setReceiver(to);
mail.setSubject(title);
mail.setMessage(message);
// 发送email
HtmlEmail email = new HtmlEmail();
try {
email.setHostName(mail.getHost());
email.setCharset(Mail.ENCODEING);
// 收件人的邮箱
email.addTo(mail.getReceiver());
// 发送人的邮箱
email.setFrom(mail.getSender(), mail.getName());
// 设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
email.setAuthentication(mail.getUsername(), mail.getPassword());
// 要发送的邮件标题
email.setSubject(mail.getSubject());
// 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签
email.setMsg(mail.getMessage());
// 发送
String result = email.send();
return true;
} catch (EmailException e) {
// e.printStackTrace();
// logger.info(mail.getSender() + " 发送邮件到 " + mail.getReceiver()
// + " 失败");
return false;
}
}
异常类
package cn.wtzvae.util.mail;
/**
*
* @author LiuJinan
* @version V1.0.0 2016年11月23日
* @version V1.1.0 2016年12月26日
*/
public class MailException extends RuntimeException {
/**
*
*/
private static final long serialVersionUID = 1L;
public MailException(Object msg) {
super(msg.toString());
}
}
异常码
package cn.wtzvae.util.mail;
/**
*
* @author LiuJinan
* @version V1.0.0 2016年11月23日
* @version V1.1.0 2016年12月26日
*/
public enum MailError {
/**
* 收件人为空
*/
MAIL_NULL_RECEIVER("收件人为空。"),
/**
* 标题为空
*/
MAIL_NULL_SUBJECT("标题为空。"),
/**
* 发送内容为空
*/
MAIL_NULL_MESSSAGE("发送内容为空。"),
/**
* 邮箱格式错误
*/
MAIL_ERROR_MAILE("格式错误"),
private String msg;
MailError(String msg){
this.msg = msg;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String toString(){
return this.msg;
}
}
4.使用
使用很简单。
看下面的例子
收到的邮件如下:
代码下载链接:
http://pan.baidu.com/s/1slEpt3B