发送邮件依赖依赖一个jar包,jar包下载链接:http://download.youkuaiyun.com/detail/csdn576038874/9853411
直接看代码吧,注解已经在代码中写的很清楚了
package com.svse;
import java.io.File;
/*
*建立 附件类,只有文件,即附件才文件名
*/
public class AttachBean {
private String cid;
private File file;
private String fileName;
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public AttachBean() {
}
public AttachBean(File file, String fileName) {
super();
this.file = file;
this.fileName = fileName;
}
}
package com.winfo.ssm.entity;
import java.util.ArrayList;
import java.util.List;
public class Mail {
private String from;//发件人
private StringBuilder toAddress = new StringBuilder();//收件人
private StringBuilder ccAddress = new StringBuilder();//抄送
private StringBuilder bccAddress = new StringBuilder();//暗送
private String subject;//主题
private String content;//正文
// 附件列表
private List<AttachBean> attachList = new ArrayList<AttachBean>();
public Mail() {}
public Mail(String from, String to) {
this(from, to, null, null);
}
public Mail(String from, String to, String subject, String content) {
this.from = from;
this.toAddress.append(to);
this.subject = subject;
this.content = content;
}
/**
* 返回发件人
* @return
*/
public void setFrom(String from) {
this.from = from;
}
/**
* 返回发件人
* @return
*/
public String getFrom() {
return from;
}
/**
* 返回主题
*/
public String getSubject() {
return subject;
}
/**
* 设置主题
*/
public void setSubject(String subject) {
this.subject = subject;
}
/**
* 获取主题内容
*/
public String getContent() {
return content;
}
/**
* 设置主题内容
* @param content
*/
public void setContent(String content) {
this.content = content;
}
/**
* 获取收件人
* @return
*/
public String getToAddress() {
return toAddress.toString();
}
/**
* 获取抄送
* @return
*/
public String getCcAddress() {
return ccAddress.toString();
}
/**
* 获取暗送
* @return
*/
public String getBccAddress() {
return bccAddress.toString();
}
/**
* 添加收件人,可以是多个收件人
* @param to
*/
public void addToAddress(String to) {
if(this.toAddress.length() > 0) {
this.toAddress.append(",");
}
this.toAddress.append(to);
}
/**
* 添加抄送人,可以是多个抄送人
* @param cc
*/
public void addCcAddress(String cc) {
if(this.ccAddress.length() > 0) {
this.ccAddress.append(",");
}
this.ccAddress.append(cc);
}
/**
* 添加暗送人,可以是多个暗送人
* @param bcc
*/
public void addBccAddress(String bcc) {
if(this.bccAddress.length() > 0) {
this.bccAddress.append(",");
}
this.bccAddress.append(bcc);
}
/**
* 添加附件,可以添加多个附件
* @param attachBean
*/
public void addAttach(AttachBean attachBean) {
this.attachList.add(attachBean);
}
/**
* 获取所有附件
* @return
*/
public List<AttachBean> getAttachs() {
return this.attachList;
}
}
package com.winfo.ssm.entity;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.IOException;
import java.util.List;
import java.util.Properties;
public class MailUtils {
public static Session createSession(String host, final String username, final String password) {
Properties prop = new Properties();
prop.setProperty("mail.host", host);// 指定主机
prop.setProperty("mail.smtp.auth", "true");// 指定验证为true
prop.setProperty("mail.smtp.port","465");
prop.setProperty("mail.smtp.socketFactory.class" , "javax.net.ssl.SSLSocketFactory");
prop.setProperty("mail.smtp.socketFactory.port","465");
prop.setProperty("mail.smtp.starttls.enable","true");
prop.setProperty("mail.smtp.socketFactory.fallback" , "false");
prop.setProperty("mail.smtp.timeout", "30000");
// 创建验证器
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
};
// 获取session对象
return Session.getInstance(prop, auth);
}
/**
* 发送指定的邮件
*
* @param mail
*/
public static void send(Session session, final Mail mail) throws MessagingException, IOException {
MimeMessage msg = new MimeMessage(session);// 创建邮件对象
msg.setFrom(new InternetAddress(mail.getFrom()));// 设置发件人
msg.addRecipients(Message.RecipientType.TO, mail.getToAddress());// 设置收件人
// 设置抄送
String cc = mail.getCcAddress();
if (!cc.isEmpty()) {
msg.addRecipients(Message.RecipientType.CC, cc);
}
// 设置暗送
String bcc = mail.getBccAddress();
if (!bcc.isEmpty()) {
msg.addRecipients(Message.RecipientType.BCC, bcc);
}
msg.setSubject(mail.getSubject());// 设置主题
MimeMultipart parts = new MimeMultipart();// 创建部件集对象
MimeBodyPart part = new MimeBodyPart();// 创建一个部件
part.setContent(mail.getContent(), "text/html;charset=utf-8");// 设置邮件文本内容
parts.addBodyPart(part);// 把部件添加到部件集中
///
// 添加附件
List<AttachBean> attachBeanList = mail.getAttachs();// 获取所有附件
if (attachBeanList != null) {
for (AttachBean attach : attachBeanList) {
MimeBodyPart attachPart = new MimeBodyPart();// 创建一个部件
attachPart.attachFile(attach.getFile());// 设置附件文件
attachPart.setFileName(MimeUtility.encodeText(attach
.getFileName()));// 设置附件文件名
String cid = attach.getCid();
if(cid != null) {
attachPart.setContentID(cid);
}
parts.addBodyPart(attachPart);
}
}
msg.setContent(parts);// 给邮件设置内容
Transport.send(msg);// 发邮件
}
}
import com.winfo.ssm.entity.Mail;
import com.winfo.ssm.entity.MailUtils;
import javax.mail.MessagingException;
import javax.mail.Session;
import java.io.IOException;
public class MailTest {
public static void main(String args[]){
String host = "smtp.qq.com";//网易163邮件传输协议smtp.163.com 腾讯 qq的是smtp.qq.com
/**
* 这里需要注意一下 如果你想用qq邮箱作为发件人邮箱的话 记得把邮箱传输协议host值改为smtp.qq.com
* 另外 username登陆名还是 一样 直接写QQ号,不用加后缀
*/
// String username = "";//发件人邮箱的用户名 这里不要加后缀@163.com
String username = "";
/** 注意事项
* 如果是用的QQ邮箱的话 这里的password不能写QQ邮箱的登陆密码 你要去登录到QQ邮箱 点 设置>账户 下面会有一个"POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务"
* 选项,把"POP3/SMTP服务" 开启来 会提示发送短信获取授权码,这里写获取到的授权码即可
*
* 使用网易的也是一样需要开启,进入设置->客户端授权密码,点击开启 设置授权密码即可
*/
// String password = ""; //授权码
String password = "";
/**
* 这里发件人 要写全名
*/
// String from = "@163.com";//发件人的邮箱 全名 加后缀
String from = "xx@qq.com";
/**
* 收件人 同样要写全名
*/
String to = "xx@qq.com,aa@163.com,bb@qq.com";//收件人的邮箱
/**
* 主题自定义
*/
String subject = "邮件测试";//邮件主题
/**
* 自定义
*/
String content = "xxxxxxxxxxxxxxxxxxxxx";//邮件的内容
/**
* 调用写好的邮件帮助类 MailUtils 直接调用createSession 根据以上(host, username, password三个参数)创建出session
*/
Session session = MailUtils.createSession(host, username, password);
/**
* 创建邮件对象from, to,subject,content 这四个参数
*/
Mail mail = new Mail();
mail.addToAddress(to);//设置接受方邮箱,可以多个用逗号隔开
mail.setFrom(from);//设置发送方
mail.setSubject(subject);//设置主体
mail.setContent(content);//设置邮件内容
// mail.addAttach(new AttachBean());//添加附件
mail.addCcAddress("*****@163.com");//添加抄送
try {
/**
* 最后一步 调用MailUtils的send方法 将session和创建好的邮件对象传进去 发送就ok了
*/
MailUtils.send(session, mail);
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}