首先定义我们的邮箱类
/**
* 邮件类
*
* @author yanxh
*
*/
public class Mail {
/**
* smtp服务器
*/
private String smtpHost = "";
/**
* smtp服务器是否授权 true表示授权
*/
private String smtpAuth = "";
/**
* smtp服务器监听端口
*/
private String smtpPort = "";
/**
* 发件人地址
*/
private String sender = "";
/**
* 收件人地址
*/
private String receiver = "";
/**
* 邮件文本内容
*/
private String text = "";
/**
* 附件地址
*/
private String attachmentUrl = "";
/**
* 附件名称
*/
private String attachmentName = "";
/**
* 用户名
*/
private String username = "";
/**
* 密码(授权码)
*/
private String password = "";
/**
* 邮件标题
*/
private String title = "";
public String getSmtpHost() {
return smtpHost;
}
public void setSmtpHost(String smtpHost) {
this.smtpHost = smtpHost;
}
public String getSmtpAuth() {
return smtpAuth;
}
public void setSmtpAuth(String smtpAuth) {
this.smtpAuth = smtpAuth;
}
public String getSmtpPort() {
return smtpPort;
}
public void setSmtpPort(String smtpPort) {
this.smtpPort = smtpPort;
}
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 getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getAttachmentUrl() {
return attachmentUrl;
}
public void setAttachmentUrl(String attachmentUrl) {
this.attachmentUrl = attachmentUrl;
}
public String getAttachmentName() {
return attachmentName;
}
public void setAttachmentName(String attachmentName) {
this.attachmentName = attachmentName;
}
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 getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
其次是邮箱工具类
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;
import javax.mail.internet.MimeUtility;
/**
* 邮件工具类
*
* @author yanxh
*
*/
public class MailUtils {
/**
* 后加的防止题目过长并且进行全局定义
*/
static {
System.setProperty("mail.mime.splitlongparameters", "false");
System.setProperty("mail.mime.charset", "UTF-8");
}
public static void send(Mail mail) {
Properties props = new Properties();
// 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
props.put("mail.smtp.host", mail.getSmtpHost());
// 需要经过授权,也就是有户名和密码的校验,这样才能通过验证
props.put("mail.smtp.auth", mail.getSmtpAuth());
props.put("mail.smtp.port", mail.getSmtpPort());
props.put("mail.smtp.ssl.enable", true);
// 用刚刚设置好的props对象构建一个session
Session session = Session.getDefaultInstance(props);
// 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使
// 用(你可以在控制台(console)上看到发送邮件的过程)
session.setDebug(true);
// 用session为参数定义消息对象
MimeMessage message = new MimeMessage(session);
try {
// 加载发件人地址
message.setFrom(new InternetAddress(mail.getSender()));
// 加载收件人地址
message.addRecipient(Message.RecipientType.TO, new InternetAddress(mail.getReceiver()));
// 加载标题
message.setSubject(mail.getTitle());
// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
Multipart multipart = new MimeMultipart();
// 设置邮件的文本内容
BodyPart contentPart = new MimeBodyPart();
contentPart.setText(mail.getText());
multipart.addBodyPart(contentPart);
// 添加附件
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(mail.getAttachmentUrl());
// 添加附件的内容
messageBodyPart.setDataHandler(new DataHandler(source));
// 添加附件的标题
messageBodyPart.setFileName(MimeUtility.encodeText(mail.getAttachmentName()));
multipart.addBodyPart(messageBodyPart);
// 将multipart对象放到message中
message.setContent(multipart);
// 保存邮件
message.saveChanges();
// 发送邮件
Transport transport = session.getTransport("smtp");
// 连接服务器的邮箱
transport.connect(mail.getSmtpHost(), mail.getUsername(), mail.getPassword());
// 把邮件发送出去
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
开始测试
// 发送邮件
Mail mail = new Mail();
mail.setSender("xxxxxx@qq.com"); // 发件人邮箱
mail.setReceiver("qwwwwww@163.com"); // 收件人邮箱
mail.setTitle("邮件标题"); // 邮件标题
mail.setAttachmentUrl("D:/111/22.pdf"); // 附件的物理地址
mail.setAttachmentName("附件名称"); // 附件名称
mail.setSmtpHost("smtp.exmail.qq.com"); // 邮箱服务器
mail.setUsername("xxxxxx@qq.com"); // 发件人邮箱用户名,一般就是发件人邮箱
mail.setPassword("wqweqwe"); // 发件人邮箱的授权码
MailUtils.send(mail);
可能遇到的问题