Java Mail的使用
一.用于进行用户认证的类(PopupAuthenticator):
import javax.mail.*;
public class PopupAuthenticator extends Authenticator{
String username=null;
String password=null;
public PopupAuthenticator(String user, String pass) {
username = user;
password = pass;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
二.用于封装发送邮件的用户信息的类(MailuserInfo):
public class MailuserInfo {
private int id;
//邮件服务器地址
private String host;
//一定要是有效的Email地址(否则无法通过认证)
private String from;
//邮件服务器用户认证
private String user;
private String password;
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
三.用于封装具体邮件信息的类(MailEntry):
public class MailEntry {
//抄送的地址
private String cc;
//发送的地址
private String to;
//邮件主题
private String title;
//邮件附件
private String file;
//邮件正文
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getFile() {
return file;
}
public void setFile(String file) {
this.file = file;
}
public String getCc() {
return cc;
}
public void setCc(String cc) {
this.cc = cc;
}
}
四.用于实现发送邮件功能的类(MailUtil):
import java.io.File;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class MailUtil {
public static void send(MailuserInfo info,MailEntry entry)
{
try {
Properties properties = System.getProperties();
//邮件服务器
properties.put("mail.smtp.host", info.getHost());
//设置邮件发送协议
properties.put("mail.transport.protocol", "smtp");
//进行用户认证
properties.put("mail.smtp.auth","true");
//邮件服务器用户认证
PopupAuthenticator popAuthenticator = new PopupAuthenticator(info.getUser(),info.getPassword());
Session session = Session.getDefaultInstance(properties, popAuthenticator);
session.setDebug(false);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(info.getFrom()));
InternetAddress[] addresses = null;//{ new InternetAddress(entry.getTo()) };
String[] toArrays = entry.getTo().split(",");
addresses = new InternetAddress[toArrays.length];
for (int i = 0; i < toArrays.length; i++) {
addresses[i] = new InternetAddress(toArrays[i]);
System.out.println("发送的地址为:" + toArrays[i]);
}
if(entry.getCc() != null && (!"".equals(entry.getCc())))
{
String[] ccArrays = entry.getCc().split(",");
InternetAddress[] addresscc = new InternetAddress[ccArrays.length];
for (int i = 0; i < ccArrays.length; i++) {
addresscc[i] = new InternetAddress(ccArrays[i]);
System.out.println("抄送的地址为:" + ccArrays[i]);
}
msg.setRecipients(Message.RecipientType.CC, addresscc);
}
//设置邮件接收方的地址
msg.setRecipients(Message.RecipientType.TO, addresses);
//设置邮件主题
msg.setSubject(entry.getTitle());
//设置邮件发送日期
msg.setSentDate(new Date());
//邮件内容,附件等内容均添加到其中后再生成MimeMessage对象
Multipart multipart = new MimeMultipart();
//设置邮件正文
if(entry.getContent() != null)
{
System.out.println("设置邮件正文:" + entry.getContent());
BodyPart body = new MimeBodyPart();
body.setText(entry.getContent());
multipart.addBodyPart(body);
}
if(entry.getFile() != null && !entry.getFile().equals(""))
{
BodyPart bodyPart = new MimeBodyPart();
bodyPart.setText("文件");
//Multipart multipart = new MimeMultipart();
//此处设置邮件的附件
DataSource source = new FileDataSource(entry.getFile());
bodyPart.setDataHandler(new DataHandler(source));
File file = new File(entry.getFile());
bodyPart.setFileName(file.getName());
multipart.addBodyPart(bodyPart);
System.out.println("发送附件..");
}
msg.setContent(multipart);
Transport transport = session.getTransport("smtp");
System.out.println("连接邮件服务器!");
transport.connect((String)properties.get("mail.smtp.host"),info.getUser(),info.getPassword());
System.out.println("发送邮件....");
transport.send(msg,msg.getRecipients(Message.RecipientType.TO));
System.out.println("发送成功!");
transport.close();
//Transport.send(msg);
} catch (Exception e) {
e.printStackTrace();
}
}
}
注:在使用时需要导入的包:activation.jar,mail.jar.
import javax.mail.*;
public class PopupAuthenticator extends Authenticator{
String username=null;
String password=null;
public PopupAuthenticator(String user, String pass) {
username = user;
password = pass;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
二.用于封装发送邮件的用户信息的类(MailuserInfo):
public class MailuserInfo {
private int id;
//邮件服务器地址
private String host;
//一定要是有效的Email地址(否则无法通过认证)
private String from;
//邮件服务器用户认证
private String user;
private String password;
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
三.用于封装具体邮件信息的类(MailEntry):
public class MailEntry {
//抄送的地址
private String cc;
//发送的地址
private String to;
//邮件主题
private String title;
//邮件附件
private String file;
//邮件正文
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getFile() {
return file;
}
public void setFile(String file) {
this.file = file;
}
public String getCc() {
return cc;
}
public void setCc(String cc) {
this.cc = cc;
}
}
四.用于实现发送邮件功能的类(MailUtil):
import java.io.File;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class MailUtil {
public static void send(MailuserInfo info,MailEntry entry)
{
try {
Properties properties = System.getProperties();
//邮件服务器
properties.put("mail.smtp.host", info.getHost());
//设置邮件发送协议
properties.put("mail.transport.protocol", "smtp");
//进行用户认证
properties.put("mail.smtp.auth","true");
//邮件服务器用户认证
PopupAuthenticator popAuthenticator = new PopupAuthenticator(info.getUser(),info.getPassword());
Session session = Session.getDefaultInstance(properties, popAuthenticator);
session.setDebug(false);
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(info.getFrom()));
InternetAddress[] addresses = null;//{ new InternetAddress(entry.getTo()) };
String[] toArrays = entry.getTo().split(",");
addresses = new InternetAddress[toArrays.length];
for (int i = 0; i < toArrays.length; i++) {
addresses[i] = new InternetAddress(toArrays[i]);
System.out.println("发送的地址为:" + toArrays[i]);
}
if(entry.getCc() != null && (!"".equals(entry.getCc())))
{
String[] ccArrays = entry.getCc().split(",");
InternetAddress[] addresscc = new InternetAddress[ccArrays.length];
for (int i = 0; i < ccArrays.length; i++) {
addresscc[i] = new InternetAddress(ccArrays[i]);
System.out.println("抄送的地址为:" + ccArrays[i]);
}
msg.setRecipients(Message.RecipientType.CC, addresscc);
}
//设置邮件接收方的地址
msg.setRecipients(Message.RecipientType.TO, addresses);
//设置邮件主题
msg.setSubject(entry.getTitle());
//设置邮件发送日期
msg.setSentDate(new Date());
//邮件内容,附件等内容均添加到其中后再生成MimeMessage对象
Multipart multipart = new MimeMultipart();
//设置邮件正文
if(entry.getContent() != null)
{
System.out.println("设置邮件正文:" + entry.getContent());
BodyPart body = new MimeBodyPart();
body.setText(entry.getContent());
multipart.addBodyPart(body);
}
if(entry.getFile() != null && !entry.getFile().equals(""))
{
BodyPart bodyPart = new MimeBodyPart();
bodyPart.setText("文件");
//Multipart multipart = new MimeMultipart();
//此处设置邮件的附件
DataSource source = new FileDataSource(entry.getFile());
bodyPart.setDataHandler(new DataHandler(source));
File file = new File(entry.getFile());
bodyPart.setFileName(file.getName());
multipart.addBodyPart(bodyPart);
System.out.println("发送附件..");
}
msg.setContent(multipart);
Transport transport = session.getTransport("smtp");
System.out.println("连接邮件服务器!");
transport.connect((String)properties.get("mail.smtp.host"),info.getUser(),info.getPassword());
System.out.println("发送邮件....");
transport.send(msg,msg.getRecipients(Message.RecipientType.TO));
System.out.println("发送成功!");
transport.close();
//Transport.send(msg);
} catch (Exception e) {
e.printStackTrace();
}
}
}
注:在使用时需要导入的包:activation.jar,mail.jar.