Java发送QQ邮件
- 一、引入POM依赖?
- 二、封装对象
- 三、工具类
- 四、使用
一、引入POM依赖?
javax.mail
mail
1.4.3
二、封装对象
package com.cndatacom.cloud1.cdchr.modules.hireinfo.common.emailutil;
import java.util.Vector;
public class EmailBean {
Vector to; // 收件人
private String from; // 发件人
Vector copyColumn; // 抄送人
private String host; // SMTP主机
private String username; // 发件人的用户名
private String password; // 发件人的密码
private String subject; // 邮件主题
private String content; // 邮件正文
Vector file; // 多个附件
private String filename; // 附件的文件名
public Vector getTo() {
return to;
}
public void setTo(String toName) {
if(to==null){
to = new Vector();
}
to.addElement(toName);
}
public Vector getCopyColumn(){
return copyColumn;
}
public void setCopyColumn(String ccName){
if(copyColumn==null){
copyColumn = new Vector();
}
copyColumn.addElement(ccName);
}
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 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 getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public Vector getFile() {
return file;
}
public void attachFile(String fileName) {
if (file == null)
file = new Vector();
file.addElement(fileName);
}
}
三、工具类
package com.cndatacom.cloud1.cdchr.modules.hireinfo.common.emailutil;
import org.apache.commons.codec.binary.base64;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.UnsupportedEncodingException;
import java.util.*;
public class SendEmail {
public boolean sendMail(EmailBean mb) {
String host = mb.getHost();
final String username = mb.getUsername();
final String password = mb.getPassword();
String from = mb.getFrom();
String subject = mb.getSubject();
String content = mb.getContent();
String fileName = mb.getFilename();
Vector file = mb.getFile();
Properties props = new Properties();
// mail.smtp.host
props.setProperty("mail.smtp.host", host); // 设置SMTP的主机
props.setProperty("mail.smtp.auth", "true"); // 需要经过验证
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "25");
props.setProperty("mail.smtp.socketFactory.port", "25");
//Session s = Session.getInstance(props, null);
Session session = Session.getInstance(props, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
MimeMessage msg = new MimeMessage(session);
// 设置多个收件人地址
List list = mb.getTo();
String toAddress = getAddress(list);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = InternetAddress.parse(toAddress);
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
// 设置抄送人
if (mb.getCopyColumn() != null) {
msg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(getAddress(mb.getCopyColumn())));
}
Multipart mp = new MimeMultipart();//MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
BodyPart mbpContent = new MimeBodyPart();// 创建一个包含HTML内容的MimeBodyPart
mbpContent.setContent(content,"text/html; charset=utf-8");// 设置HTML内容
mp.addBodyPart(mbpContent);// 将MiniMultipart对象设置为邮件内容
if (file != null) {
Enumeration efile = file.elements();
while (efile.hasMoreElements()) {
MimeBodyPart mbpFile = new MimeBodyPart();
fileName = efile.nextElement().toString();
FileDataSource fds = new FileDataSource(fileName);
mbpFile.setDataHandler(new DataHandler(fds));
try {
mbpFile.setFileName("=?GBK?B?"
+ base64.encodebase64String(fds.getName().getBytes("GBK"))
+ "?=");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
mp.addBodyPart(mbpFile);
}
}
msg.setContent(mp);
msg.setSentDate(new Date());
Transport.send(msg);
} catch (MessagingException me) {
me.printStackTrace();
return false;
}
return true;
}
public String getAddress(List list){
String address = "";
for (String string : list) {
address += string + ",";
}
return address;
}
}
四、使用
@Test
public void ok1(){
EmailBean mb = new EmailBean();
mb.setTo("1147786105@qq.com"); // 接收地址
//mb.attachFile(Constant.UploadPath.QRCODE.getValue() + "QRCode.jpg");//添加附件 需要可以直接放一个文件路径
mb.setHost("smtp.qq.com");// 设置SMTP主机(163),若用126,则设为:smtp.126.com
mb.setUsername("5141802@qq.com");// 设置发件人邮箱的用户名
mb.setPassword("********");// 设置发件人邮箱的密码,需将*号改成正确的密码
mb.setFrom("5141802@qq.com");// 设置发件人的邮箱
mb.setCopyColumn("1752328925@qq.com");// 设置抄送人
mb.setCopyColumn("xx@xx.com");// 设置抄送人
mb.setSubject("csSubject");// 设置邮件的主题
mb.setContent("csContent");// 设置邮件的正文
SendEmail sm = new SendEmail();
boolean b = sm.sendMail(mb);
System.out.println("发送结果:" + b);
}